Как создать множественную ссылку на dyanmic объект в PHP? - PullRequest
0 голосов
/ 27 июня 2011

У меня есть строка с 'item-> anotheritem'

Я хочу использовать это как переменную dyanmic. Это возможно? например:

$string = 'item->anotheritem';
$obj->$string;

В конечном итоге пытаюсь закончить со следующим, но, похоже, это не нравится. Есть идеи?

$object->item->anotheritem;

Использование PHP версии 5.3.2

Ответы [ 2 ]

0 голосов
/ 21 декабря 2012

Есть два способа сделать это. Во-первых, вы можете вручную разбить строку и оценить каждый элемент объекта, или, во-вторых, вы можете использовать функцию PHP eval(). Я не рекомендую последнее, хотя, поскольку это очень страшно с точки зрения безопасности. Вот как выглядят эти два механизма:

<?php
// Get some test data...
$obj = new stdClass;
$obj->item = new stdClass;
$obj->item->anotheritem = "Goal!";
$string = 'item->anotheritem';

// Method #1
$target = $obj;
$parts = explode('->', $string);
foreach ($parts as $part) {
    $target = $target->{$part};
}
var_dump($target);

// Method #2 -- Avoid like the plague! ;)
$target2 = eval('return $obj->item->anotheritem;');
var_dump($target2);
0 голосов
/ 27 июня 2011

В первом блоке кода вы пытаетесь проанализировать имя переменной как строку в переменной $ string?Это не соответствует тому, что вы пытаетесь сделать во втором коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...