获取动态类和动态属性的值

时间:2013-07-17 20:18:00

标签: php eval dynamic-class dynamic-properties

是否可以获取作为类的实例变量的值,获取所需的值只是一个字符串?我得到的字符串是“$ 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 个答案:

答案 0 :(得分:3)

eval不返回计算结果,如果要在$val中存储属性值,则必须将其包含在计算字符串中:

$a = 'user->prop';
$eval = '$val = $'.$a.';';

eval($eval);
var_dump($val);

答案 1 :(得分:2)

这不会起作用,因为您无法动态代表->

$user->Prop = 3;
$a = "user->Prop";
$val = ${$a};

但你可以这样做:

$user->Prop = 3;
$a = "user";
$b = "Prop";
$val = ${$a}->$b;

答案 2 :(得分:0)

如果我有一个字符串(11)“$ user-> Prop”并且它存储在$ a中我需要做的是:

$val = eval("return $a;");

需要更仔细地阅读文档...我想这是好的写作。