PHP 来自字符串的动态变量

PHP dynamic var from string

我知道 PHP 动态变量是如何工作的,我知道我可以访问对象 属性 $object->{'somethingWith$var'}; 或喜欢 $object->$var;

但我试图完成的是从 $object 和字符串 $string = 'property->subproperty';.

访问 $object->property->subproperty

我试了$object->$string$object->{$string}$object->$$string哈哈哈,none成功了

有人知道怎么做吗? :)

没有办法那样做。

您必须先分配 $property = $object->$propertyName,然后访问您想要的变量 $property->$subpropertyName

在您的示例中,字符串 property->subproperty 将被视为显然不存在的变量名。

你可以编写简单的函数,像这样:

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

它不起作用,因为您通过尝试完成的所有工作都获得了 $object{'property->subproperty'},这当然与 $object->{'property'}->{'subproperty'} 不同。

您可以做的是:

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

否则你将不得不走向丑陋和邪恶eval()(开始投票):

eval("return $object->$string;")