最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
PHP对象的浅复制与深复制的实例详解
时间:2022-06-24 14:38:37 编辑:袖梨 来源:一聚教程网
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.'
');//结果为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
相关文章
- 无尽花界诸神角色图鉴 无尽花界阵营角色详细介绍 05-08
- 驯龙之旅兑换码大全 驯龙之旅最新可用礼包码汇总 05-08
- 曲奇云盘怎么保存别人分享的文件 05-08
- 末世避难所手游新手入门指南 末世避难所手游零基础快速上手教程 05-08
- 六道轮回手游上线时间揭晓 六道轮回手游正式开服日期分享 05-08
- 无限暖暖埋骨地10个冥想点位一览 05-08