PHP對象的淺復制與深復制的實例詳解

更新:2017-10-27    編輯:慕風    來源:哥乖網    人氣:加載中...    字號:|

標簽:實例  對象  詳解  復制  百度搜索

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>

如有疑問請留言或者到本站社區交流討論,,感謝導語,愿望能贊助到大家,謝謝大家對本站的支持!

評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)

站點導航

您可能在找這些
四川快乐12电视软件 欢乐游戏棋牌官网 北京赛车pk10开奖走势图改单 北京快中彩基本走势 捕鱼大亨游戏下载手机版 雀神麻将推倒胡技巧 辽宁11选五遗漏 福彩3d数字对应码 手机麻将神器免费下 贵州11选5计划 2019香港正版四不像图