PHP对象的浅复制与深复制的实例详解
程序员文章站
2022-05-30 21:55:24
php对象的浅复制与深复制的实例详解
最近在看原型模式时注意到这个问题~~php中对象 '=' 与‘clone'的区别
实例代码:
//聚合类
cla...
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>
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
上一篇: 素酒是什么,你有听说过吗