| PHP对象的浅复制与深复制的实例详解最近在看原型模式时注意到这个问题~~PHP中对象 '=' 与‘clone'的区别
 实例代码: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.'
 ');//结果为2
 print_r($objA2->num.'
 ');//结果为2
 //复制对象(‘clone'关键字克隆)$objA3 = clone $objA;
 $objA3->num = 4;
 //随着$objA3->num的变化 $objA->num没有变化
 print_r($objA->num.'
 ');//结果为2
 print_r($objA3->num.'
 ');//结果为4
 //但是clone的对象(是聚合类)中包含其他对象时所包含的对象(objB)复制的是引用
 $objA3->objB->num2 = 7;
 print_r($objA3->objB->num2.'
 ');//结果是7
 print_r($objA->objB->num2.'
 ');//结果是7
 如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持! (编辑:宣城站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |