[請益]return $this; 與 return (&$this); 的觀念釐清

看板PHP作者 (水母水母水中游)時間16年前 (2009/09/06 11:45), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串1/1
首先要說明一下 return (&$this); 的意思 應該是要下面這樣才對 $obj = &$this; return $obj; // 直接寫 return (&$this) 會有語法上的錯誤 我是想問一個觀念上的問題,算是call by refernce的觀念 先舉下面的code為例子: class OBJECT_A { private $var = 'obja'; functio foo() { return $this } } $obja = new OBJECT_A; class OBJECT_B { private $var = 'objb'; functio foo() { $obj = &$this; return $obj; } } $objb = new OBJECT_B; $a = $obja->foo(); $b = $objb->foo(); 現在這個範例中有四個變數 $obja, $objb, $a, $b 照 php 中 Variable References 的觀念來看這四個變數的關係, 依我的理解是 $a is not equal $obja, $a 是個新的物件OBJECT_A $b equal $objb, $b 和 $objb 是完全相同的物件 不知道我在觀念上是否有誤? 另外我想知道 return $this; 的作法,是否等於 clone 一個新物件呢? 那這樣 return $this; 是否就會再增加一個與原物件相同大小的記憶體空間嗎? 我的目的是想清楚地瞭解php是如何處理記憶體的調用 理想上我希望能不增加記憶體的使用量,就能讓物件在整個程式內被共同使用 所以 return $this; 是否會再新增記憶體空間, 對我相當地重要 如果我的理解沒有錯誤 那我會使用 $obj = &$this; return $obj; 這樣的方式達到我的目的 還請各位板上的朋友多多討論 謝謝指教 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.57.134.105

09/06 15:29, , 1F
記憶中有這種方式 $a =& $obja->foo();
09/06 15:29, 1F

09/06 15:29, , 2F
(Xoops 的 getInstance
09/06 15:29, 2F
文章代碼(AID): #1Aep1eJS (PHP)
文章代碼(AID): #1Aep1eJS (PHP)