如何获取 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
不同
例如,我有以下内容:
$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