PHP对象的浅复制与深复制的实例详解


Posted in PHP onOctober 26, 2017

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>

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

PHP 相关文章推荐
JAVA/JSP学习系列之四
Oct 09 PHP
php 在线打包_支持子目录
Jun 28 PHP
php下实现在指定目录搜索指定类型文件的函数
Oct 03 PHP
Can't create/write to file 'C:\WINDOWS\TEMP\...MYSQL报错解决方法
Jun 30 PHP
供参考的 php 学习提高路线分享
Oct 23 PHP
php打乱数组二维数组多维数组的简单实例
Jun 17 PHP
php变量与数组相互转换的方法(extract与compact)
Dec 02 PHP
浅谈PHP的反射机制
Dec 15 PHP
PHP设计模式之状态模式定义与用法详解
Apr 02 PHP
详解php协程知识点
Sep 21 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
Dec 20 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
Apr 02 PHP
PHP中的浅复制与深复制的实例详解
Oct 26 #PHP
thinkPHP5实现数据库添加内容的方法
Oct 25 #PHP
thinkPHP5分页功能实现方法分析
Oct 25 #PHP
thinkPHP框架中执行原生SQL语句的方法
Oct 25 #PHP
php调用云片网接口发送短信的实现方法
Oct 25 #PHP
OAuth认证协议中的HMACSHA1加密算法(实例)
Oct 25 #PHP
Laravel学习教程之request validation的编写
Oct 25 #PHP
You might like
自动分页的不完整解决方案
2007/01/12 PHP
php的POSIX 函数以及进程测试的深入分析
2013/06/03 PHP
php生成QRcode实例
2014/09/22 PHP
PHP函数实现分页含文本分页和数字分页
2014/10/23 PHP
ThinkPHP3.2.3数据库设置新特性
2015/03/05 PHP
PHP中SSO Cookie登录分析和实现
2015/11/06 PHP
php项目开发中用到的快速排序算法分析
2016/06/25 PHP
PHP串行化与反串行化实例分析
2016/12/27 PHP
jquery实现的超出屏幕时把固定层变为定位层的代码
2010/02/23 Javascript
js设置组合快捷键/tabindex功能的方法
2013/11/21 Javascript
jQuery实现可收缩展开的级联菜单实例代码
2013/11/27 Javascript
Jquery easyUI 更新行示例
2014/03/06 Javascript
JavaScript编写Chrome扩展实现与浏览器的交互及时间通知
2016/05/16 Javascript
Javascript中的 “&amp;” 和 “|” 详解
2017/02/02 Javascript
ES6学习之变量的解构赋值
2017/02/12 Javascript
jQuery实现动态给table赋值的方法示例
2017/07/04 jQuery
利用yarn代替npm管理前端项目模块依赖的方法详解
2017/09/04 Javascript
深入理解Vue nextTick 机制
2018/04/28 Javascript
vue组件定义,全局、局部组件,配合模板及动态组件功能示例
2019/03/19 Javascript
Antd-vue Table组件添加Click事件,实现点击某行数据教程
2020/11/17 Javascript
React中使用Vditor自定义图片详解
2020/12/25 Javascript
[02:36]DOTA2英雄基础教程 一击致命幻影刺客
2013/12/06 DOTA
浅谈flask截获所有访问及before/after_request修饰器
2018/01/18 Python
用python处理MS Word的实例讲解
2018/05/08 Python
selenium跳过webdriver检测并模拟登录淘宝
2019/06/12 Python
150行Python代码实现带界面的数独游戏
2020/04/04 Python
音乐系毕业生自荐信
2013/10/27 职场文书
如何做好总经理助理
2013/11/12 职场文书
活动倡议书范文
2014/05/13 职场文书
工伤事故赔偿协议书(标准)
2014/09/29 职场文书
优秀高中学生评语
2014/12/30 职场文书
2015学校年度工作总结
2015/05/11 职场文书
今日说法观后感
2015/06/08 职场文书
保外就医申请书范文
2015/08/06 职场文书
JS + HTML 罗盘式时钟的实现
2021/05/21 Javascript
TV动画「神渣☆爱豆」公开第一弹主视觉图
2022/03/21 日漫