您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關PHP對象中淺復制與深復制的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
PHP對象的淺復制與深復制的實例詳解
最近在看原型模式時注意到這個問題~~PHP中對象 '=' 與‘clone'的區別
實例代碼:
//聚合類 class ObjA { public $num = 0; public $objB;//包含的對象 function __construct() { $this->objB = new ObjB(); } //只有實現了下面方法聚合類 才能實現深復制 /*function __clone() { $this->objB = clone $this->objB; }*/ } class ObjB { public $num2 = 0; } //原型對象 $objA = new ObjA(); //復制對象(‘='復制引用) $objA2 = $objA; $objA2->num = 2; //隨著$objA2->num的變化 $objA->num也變化了 print_r($objA->num.'<br/>');//結果為2 print_r($objA2->num.'<br/>');//結果為2 //復制對象(‘clone'關鍵字克隆) $objA3 = clone $objA; $objA3->num = 4; //隨著$objA3->num的變化 $objA->num沒有變化 print_r($objA->num.'<br/>');//結果為2 print_r($objA3->num.'<br/>');//結果為4 //但是clone的對象(是聚合類)中包含其他對象時所包含的對象(objB)復制的是引用 $objA3->objB->num2 = 7; print_r($objA3->objB->num2.'<br/>');//結果是7 print_r($objA->objB->num2.'<br/>');//結果是7</pre>
關于“PHP對象中淺復制與深復制的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。