PHP динамическая переменная из строки

Я знаю, как работают динамические переменные PHP, я знаю, что могу получить доступ к свойству объекта, как
$object->{'somethingWith$var'}; или как $object->$var;

Но я пытаюсь получить доступ к $object->property->subproperty от $object и строка $string = 'property->subproperty';,

я пытался $object->$string, $object->{$string}, $object->$$string хахаха, никто не работал.

Кто-нибудь знает, как это сделать? 🙂

0

Решение

Вы можете написать простую функцию, что-то вроде этого:

function accessSubproperty($object, $accessString) {
$parts = explode('->', $accessString);
$tmp = $object;
while(count($parts)) {
$tmp = $tmp->{array_shift($parts)};
}
return $tmp;
}
4

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

Нет такого способа сделать это.

Вы должны сначала назначить $property = $object->$propertyName а затем получить доступ к вар вы хотели $property->$subpropertyName,

В твоих примерах строка property->subproperty будет рассматриваться как имя переменной, которая явно не существует.

2

Это не работает, потому что все, что вы делаете с вашими попытками, становится $object{'property->subproperty'} который, конечно, не то же самое, что $object->{'property'}->{'subproperty'},

Что вы можете сделать, это:

$ret = $object;
foreach (explode("->",$string) as $bit)
$ret = $ret->$bit;

Или тебе придётся идти в безобразный и злой eval() (пусть начнется понижающее голосование):

eval("return \$object->$string;")
1
По вопросам рекламы [email protected]