MySuperCooLFunction($object->property1->property2->property3);
...
public function MySuperCooLFunction($args) {
// retreive property 3
// retreive property 2
// retreive property 1
}
有没有这样做?
答案 0 :(得分:2)
不,你可能想要做这样的事情
MySuperCooLFunction($object);
...
public function MySuperCooLFunction($object) {
$object->property1 // retreive property 1
$object->property1->property2 // retreive property 2
$object->property1->property2->property3 // retreive property 3
}
如果您因某些原因不想传入$ object,
public function MySuperCooLFunction($property1) {
$property1 // property 1 is passed in
$property1->property2 // retreive property 2
$property1->property2->property3 // retreive property 3
}
也有效
答案 1 :(得分:0)
这只有在您的属性对象将其父对象存储在其自己的属性中时才有可能,因为您只将property3
的值传递给MySuperCooLFunction()
我不建议这样做(尽管如此)这将导致相当不灵活的代码)。为什么不将$object
传递给MySuperCooLFunction()
?从上到下工作时,您可以访问所有属性。
答案 2 :(得分:0)
不,这个函数(如书面文件)没有办法获得object
,property1
或property2
的值。
调用MySuperCooLFunction($object->property1->property2->property3)
时,只传递property3
的值作为参数。进行调用后,解释器会将$object->property1->property2->property3
解析为值property3
,然后将该值移交给函数。该函数不知道如何找到/计算参数的值。
答案 3 :(得分:0)
你不能这样做。当你的函数被调用时,你正在制作一个property3的副本(如果它是一个简单的变量)或对它的引用,但你放弃了对父对象其余部分的引用。
如果要这样做,则需要将property3,property2和property1转换为具有指向父级的父字段的对象。