2013-02-19 42 views
0

我想在自己的構造傳遞一個PHP對象到另一個對象是這樣的:

class foo { 

$parent_object; 

public function __construct($obj) { 
    $this->parent_object = $obj; 
    } 
} 

class bar { 

public function __construct() { 
    $blub = new foo($this); 
    } 
} 

我問自己的問題是:我可以通過$這條的構造,因爲該對象具有實際上並沒有創建...所以是$這已經是整個對象的有效引用?

+1

運行代碼會比在這裏詢問要快:) – 2013-02-19 17:28:56

回答

5

當然可以。請記住,$this始終指向當前對象。所以:

$blub = new foo($this); 

$this點至bar實例。因此foo的構造函數中的$objbar的那個實例。

$this可用於構造函數的開頭。現在如果bar立即調用$obj上的函數,則可能是bar的實例尚未處於正確狀態(即尚未分配$blub)。這可能會導致引用問題,解決方案是將參考交換移出構造函數。

+0

如果這是不可能的,你不能在構造函數中設置屬性值,因此渲染它幾乎沒用。 – 2013-02-19 17:30:33

+0

這是一個明智的看待它的方式。 – Halcyon 2013-02-19 17:31:31

+0

謝謝你的回答!通過說明$ this allways指向當前對象:這意味着,我應該稍後在代碼中執行$ bar-> property ='value';那麼$ bar-> blub-> parent_object->屬性也會改變,對吧? – michl 2013-02-19 19:06:45

相關問題