Получение значения динамического класса и динамического свойства
Можно ли получить значение переменной экземпляра, которая является классом, а значение, которое нужно получить, - это просто строка? Я получаю строки, которые, скажем, $user->Prop, и я хочу eval() эту строку, чтобы получить значение, но кажется, что функция eval не знает о $ user, даже если это экземпляр переменная.
$user->Prop = 3;
$a = "user->Prop";
$val = eval($$a); //how to get 3 with this string?
Я знаю, что могу сделать
$prop = "prop";
$user->$prop;
и получить 3, но в этом случае я пытаюсь передать только переменную, которую я хочу проверить, и получить значение вкратце.
3 ответа
eval
не возвращает результат оценки, если вы хотите сохранить значение свойства в $val
, вы должны включить его в оценочную строку:
$a = 'user->prop';
$eval = '$val = $'.$a.';';
eval($eval);
var_dump($val);
Это не сработает, потому что вы не можете представлять ->
динамически.
$user->Prop = 3;
$a = "user->Prop";
$val = ${$a};
Но вы можете сделать это:
$user->Prop = 3;
$a = "user";
$b = "Prop";
$val = ${$a}->$b;
Оказывается, если у меня есть строка (11)"$user->Prop", и она хранится в $a, мне нужно сделать следующее:
$val = eval("return $a;");
нужно читать документы более внимательно... хорошо, чтобы написать об этом, я думаю, хотя.