2012-03-14 178 views
3

這可能嗎?從對象內獲取父對象

比方說,有相同類型的兩個對象:

$object1->object2->property = 'xxxx';

現在這樣做槽__set()。 在這一點上,我在object2的範圍內(這是object1的一個屬性)。我如何從__set函數訪問object1?

回答

4

你不能。

object1不是父,它的容器。 如果你想從object2訪問一個object1功能, 你必須有object1參考。

使用這種模式:

class class1 
{ 
    public $child; 
    public function __construct() 
    { 
     $this->child = new class2($this); 
    } 
} 

class class2 
{ 
    private $parent; 
    public function __construct(class1 $parent) 
    { 
     $this->parent = $parent; 
    } 
} 

這就是你想要的?

+0

是,這樣的事情,但我希望有辦法做到這一點,而不必四處傳遞變量:( – Alex 2012-03-14 18:46:57

+0

沒辦法,這是自然的。你可以有多個對象使用相同的類('class2') 。你如何選擇哪一個是你的'父'? – zessx 2012-03-14 21:35:29

0

嘗試使用parent::從子類中。

+0

它不是一個子類,沒有繼承,object2只是'object1'的一個屬性。 – Wiseguy 2012-03-14 18:23:19