Mar*_*ber 5 php oop properties
假设我们有一个对象 $obj。该对象具有如下属性:
$obj->p1->p2->p3 = 'foo';
Run Code Online (Sandbox Code Playgroud)
现在我得到数组中的嵌套属性结构:
$arr = array( 'p1', 'p2', 'p3' );
Run Code Online (Sandbox Code Playgroud)
目前我使用以下函数来相应地访问该属性:
function getProperty( $obj, $property ) {
foreach( $property as $p ) {
$obj = $obj->{$p};
}
return $obj;
}
$value = getProperty( $obj, $arr); // = 'foo'
Run Code Online (Sandbox Code Playgroud)
有没有更聪明的方法来做到这一点(不,“评估”不是一个选项!;))?
如果你想把它写成一行或者更漂亮一点,你可以试试这个:
echo json_decode(json_encode($obj), true)['p1']['p2']['p3']; // PHP 5.4
Run Code Online (Sandbox Code Playgroud)
或者对于 PHP 5.3:
$arr = json_decode(json_encode($obj), true);
echo $arr['p1']['p2']['p3'];
Run Code Online (Sandbox Code Playgroud)
这是你想要实现的目标吗?