Получение вложенных свойств динамически

У меня сложная ситуация …

Я могу получить значение через $type->created_by->email

  • $ type — это класс (Entity), который содержит данные.
  • create_by — это релиз, так что это тоже класс (Entity).
  • электронная почта является собственностью созданного строка.

Когда дать моему методу строку ‘title’ (свойство $type), мой код будет делать $type->$variable (где переменная $ title).

Это то, что я хочу: я хочу достичь email собственность через created_by учебный класс.
Я уже пробовала created_by->email,

Что-то вроде created_by.email как строковый ввод был бы хорош …

Как я могу получить свойства класса динамически?

Спасибо!

0

Решение

Также нет такой функциональности, доступной на уровне объекта (были попытки реализовать это [1], [2]), и это не то, что PHP будет поддерживать прямо из коробки.

Как правило, вам придется перебирать свойства. Вы можете найти что-то подобное в контексте сущности для помощника формы, см. EntityContext::val() для вдохновения.

Быстрое решение было бы использовать Hash::get().

// in CakePHP versions before 3.1.0 you'd have to convert
// the entity to an array first using $entity->toArray()
Hash::get($entity, 'dot.notated.path')

Например, вы можете реализовать это в пользовательском методе в базовом классе сущностей, который расширяют все остальные ваши сущности.

1

Другие решения

Других решений пока нет …