如何获取 PHP 对象属性的值,并将路径存储在变量中?

How can I get in PHP the value out of an object attribute with the path stored in a variable?

例如,我有以下内容: $ValuePath = "object->data->user_nicename";

而且我需要打印的不是 $ValuePath 的值,而是 $variable->data->user_nicename 的值,它是较大调用的一部分 .. 因为我遇到以下情况:

echo $objects->$ValuePath->details;

无法正常工作.. 当我这样尝试时,我收到错误消息 Class cannot be converted to string 或其他内容。

PHP伪代码:

function get_by_path($object, $path)
{
    $o = $object;
    $parts = explode('->', $path);
    // if you want to  remove the first dummy object-> reference
    array_shift($parts);
    $l = count($parts);
    while ($l)
    {
        $p = array_shift($parts); $l--;
        if ( isset($o->{$p}) ) $o = $o->{$p};
        else {$o = null; break;}
    }
    return $o;
}

这样使用:

$value = get_by_path($obj, "object->data->user_nicename"); 
// $value = $obj->data->user_nicename;

还要检查 PHP ArrayAccess Interface,它可以动态访问对象作为数组

不,你不能那样做。

根据您的声明,$ValuePath 是一个包含纯字符串 ('object->data->user_nicename') 的变量,该字符串不是对象。
然而, $objects->object->data->user_nicename->details 是一个对象。

所以 $objects->object->data->user_nicename->details$objects->$ValuePath->details

不同