Задать вопрос
@MIKEk8

Как в PHP получить объект по пути из переменной?

$object; //объект в котором есть объект "a", в котором есть объект "b", в котором есть объект "c"
$path = 'a->b->c';
Как получить из $object объект "c" используя переменную $path ?

Сейчас делаю так
$path = explode('->', $path);
foreach ($path as $step) {
  $object = $object->$step ?? null;
}
return $object;
  • Вопрос задан
  • 766 просмотров
Подписаться 2 Оценить Комментировать
Ответ пользователя Eugene Mosyukov К ответам на вопрос (4)
GeneMoss
@GeneMoss
void
$object = new Object; // Инициализация объекта, который содержит property «a»

$path = 'a->b->c';
$properties = explode('->', $path);

$getProperty = function($obj, $property) {
    // Тут какие-нибудь проверки на существование, на instanceof и т. п.
    return $obj->$property;
};

$result = array_reduce($properties, $getProperty, $object);

// $result -- это последний property в цепочке, т.е. -- «c»


UPD: Как я понял, автор хочет хранить пути доступа к узлам в XML-файле. Для этого проще использовать xpath и хранить строки вида '/a/b/c'.
$xml = new SimpleXMLElement('<xml><a><b><c>test</c></b></a></xml>');
$result = $xml->xpath('//a/b/c');
Ответ написан