PHP對象的淺復(fù)制與深復(fù)制的實例詳解
最近在看原型模式時注意到這個問題~~PHP中對象 '=' 與‘clone'的區(qū)別
實例代碼:
//聚合類 class ObjA { public $num = 0; public $objB;//包含的對象 function __construct() { $this->objB = new ObjB(); } //只有實現(xiàn)了下面方法聚合類 才能實現(xiàn)深復(fù)制 /*function __clone() { $this->objB = clone $this->objB; }*/ } class ObjB { public $num2 = 0; } //原型對象 $objA = new ObjA(); //復(fù)制對象(‘='復(fù)制引用) $objA2 = $objA; $objA2->num = 2; //隨著$objA2->num的變化 $objA->num也變化了 print_r($objA->num.'br/>');//結(jié)果為2 print_r($objA2->num.'br/>');//結(jié)果為2 //復(fù)制對象(‘clone'關(guān)鍵字克?。? $objA3 = clone $objA; $objA3->num = 4; //隨著$objA3->num的變化 $objA->num沒有變化 print_r($objA->num.'br/>');//結(jié)果為2 print_r($objA3->num.'br/>');//結(jié)果為4 //但是clone的對象(是聚合類)中包含其他對象時所包含的對象(objB)復(fù)制的是引用 $objA3->objB->num2 = 7; print_r($objA3->objB->num2.'br/>');//結(jié)果是7 print_r($objA->objB->num2.'br/>');//結(jié)果是7/pre>
如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
標簽:臨夏 黑河 中衛(wèi) 阜陽 南昌 欽州 駐馬店 延邊
巨人網(wǎng)絡(luò)通訊聲明:本文標題《PHP對象的淺復(fù)制與深復(fù)制的實例詳解》,本文關(guān)鍵詞 PHP,對象,的,淺,復(fù)制,與,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。