[PHP] 对象的浅复制与深复制-----“=” 与 “clone”
来源:互联网 发布:jsp企业门户网站源码 编辑:程序博客网 时间:2024/05/28 23:21
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 // 但是 php 版本为 5.6 时, clone 的对象(是聚合类) 中包含其他对象时所包含的对象(objB) 复制的是引用 (这应该是一个 BUG) // php 7.1.3 版本修复了这个问题 $objA->objB->num2 的值为 0 $objA3->objB->num2 = 7; print_r($objA3->objB->num2.'<br/>');// 结果为 7 print_r($objA->objB->num2.'<br/>');// 结果为 (PHP5.6 值为 7 , PHP7.1.3 值为 0)
阅读全文
0 0
- [PHP] 对象的浅复制与深复制-----“=” 与 “clone”
- php5对象复制、clone、浅复制与深复制
- php5对象复制、clone、浅复制与深复制
- php5对象复制、clone、浅复制与深复制的区别与介绍
- PHP对象的浅复制与深复制
- PHP对象的深复制与浅复制
- Java克隆clone的浅复制与深复制
- clone 深复制与浅复制 讲的很清晰
- java语言——对象的深复制(deep clone)与浅复制(shallow clone)
- 对象的浅复制与深复制
- PHP Clone 深复制和浅复制
- C# 之 类复制 MemberwiseClone与Clone(深 浅 Clone)
- C# 之类复制 MemberwiseClone与Clone(深 浅 Clone)
- C# 之 类复制 MemberwiseClone与Clone(深 浅 Clone)
- C# 之 类复制 MemberwiseClone与Clone(深 浅 Clone)
- 玩玩 javascript 对象clone 与复制。
- 对象浅复制与深复制
- Java对象深复制与浅复制
- android fragment和activity的区别
- FLASH和EEPROM的最大区别
- 用不可逆算法MD5进行加密后,如何进行登录验证
- HDFS日志json转存成parquet方案
- yum源的配置,共享和第三方软件库的搭建
- [PHP] 对象的浅复制与深复制-----“=” 与 “clone”
- jmap查看内存使用情况与生成heapdump
- 集合结构图
- openfire插件最佳实践(四)离线消息推送ios服务器
- iOS swift HTTPS 9813错误解决记录
- Codeforces 626F Group Projects 动态规划
- [bzoj1626][Usaco2007 Dec][最小生成树]修建道路
- java 字符流 读写
- 过滤器一般常用的功能