oop — доступ к вложенным объектам PHP через строки в массиве

Допустим, у нас есть объект $ obj. Этот объект имеет свойство, которое выглядит следующим образом:

$obj->p1->p2->p3 = 'foo';

Теперь я получаю вложенную структуру свойств в массиве:

$arr = array( 'p1', 'p2', 'p3' );

В настоящее время я использую следующую функцию для доступа к свойству соответственно:

function getProperty( $obj, $property ) {
foreach( $property as $p ) {
$obj = $obj->{$p};
}
return $obj;
}

$value = getProperty( $obj, $arr); // = 'foo'

Есть ли более разумный способ сделать это (нет, ‘eval’ — это не вариант!;))?

3

Решение

Если вы хотите сделать это в одну строку или немного красивее, вы можете попробовать это:

echo json_decode(json_encode($obj), true)['p1']['p2']['p3']; // PHP 5.4

или для PHP 5.3:

$arr = json_decode(json_encode($obj), true);
echo $arr['p1']['p2']['p3'];

Это цель, которую вы хотите достичь?

1

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

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

По вопросам рекламы [email protected]