所以,我有一个结构类似于下面的对象,所有这些都作为 stdClass
对象返回给我
$person->contact->phone;
$person->contact->email;
$person->contact->address->line_1;
$person->contact->address->line_2;
$person->dob->day;
$person->dob->month;
$person->dob->year;
$album->name;
$album->image->height;
$album->image->width;
$album->artist->name;
$album->artist->id;
等...(请注意,这些示例没有链接在一起)。
是否可以使用可变变量调用contact->phone
作为$person
的直接属性?
例如:
$property = 'contact->phone';
echo $person->$property;
这不会按原样工作并抛出一个 E_NOTICE
所以我正在尝试找到一个替代方法来实现这个。
有什么想法吗?
回应与代理方法相关的回答:
除了这个对象来自一个库,我用它来用数组映射填充一个新对象,如下所示:
array(
'contactPhone' => 'contact->phone',
'contactEmail' => 'contact->email'
);
然后遍历 map 以填充新对象。我想我可以代替映射器...
最佳答案
如果我是你,我会创建一个简单的方法 ->property();
返回 $this->contact->phone
关于PHP:变量中的类属性链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5375873/