有许多类似的问题,但是这有点不同,因为它涉及深层对象属性访问,而不仅仅是一个深度级别.
假设我有一个包含字符串的变量foo.bar
.
$user = new User(); $user->foo = new Foo(); $user->foo->bar = "Hello World"; $variable = "foo.bar"
我想响应$user->foo->bar
通过利用$variable
:
echo $user->foo->bar
这是我到目前为止尝试但没有成功(它说NULL):
$value = str_replace(".", "->", $value); echo $user->{$value};
deceze.. 12
使用变量属性表示法()减少对象路径非常容易$o->$p
:
$path = 'foo.bar'; echo array_reduce(explode('.', $path), function ($o, $p) { return $o->$p; }, $user);
这很容易变成一个小辅助函数.
使用变量属性表示法()减少对象路径非常容易$o->$p
:
$path = 'foo.bar'; echo array_reduce(explode('.', $path), function ($o, $p) { return $o->$p; }, $user);
这很容易变成一个小辅助函数.