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 相关文章推荐
Windows下的PHP5.0安装配制详解
Sep 05 PHP
PHP的开发框架的现状和展望
Mar 16 PHP
PHP 开发环境配置(Zend Studio)
Apr 28 PHP
用穿越火线快速入门php面向对象
Feb 22 PHP
PHP 异步执行方法,模拟多线程的应用分析
Jun 03 PHP
php cli 小技巧
Jun 03 PHP
PHP 安全检测代码片段(分享)
Jul 05 PHP
php阻止页面后退的方法分享
Feb 17 PHP
浅析php工厂模式
Nov 25 PHP
PHP 用session与gd库实现简单验证码生成与验证的类方法
Nov 15 PHP
PHP多进程编程实例详解
Jul 19 PHP
php7 参数、整形及字符串处理机制修改实例分析
May 25 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
一组PHP可逆加密解密算法实例代码
2014/01/21 PHP
PHP实现的oracle分页函数实例
2016/01/25 PHP
php版微信公众平台之微信网页登陆授权示例
2016/09/23 PHP
php中Redis的应用--消息传递
2017/03/28 PHP
win10 apache配置虚拟主机后localhost无法使用的解决方法
2018/01/27 PHP
IE8 引入跨站数据获取功能说明
2008/07/22 Javascript
Mootools 1.2教程(3) 数组使用简介
2009/09/14 Javascript
Jquery iframe内部出滚动条
2010/02/11 Javascript
JQuery触发radio或checkbox的change事件
2012/12/18 Javascript
javascript跨域原因以及解决方案分享
2015/04/08 Javascript
AngularJS实现按钮提示与点击变色效果
2016/09/07 Javascript
深入理解jQuery()方法的构建原理
2016/12/05 Javascript
利用SpringMVC过滤器解决vue跨域请求的问题
2018/02/10 Javascript
策略模式实现 Vue 动态表单验证的方法
2019/09/16 Javascript
Websocket 向指定用户发消息的方法
2020/01/09 Javascript
koa-passport实现本地验证的方法示例
2020/02/20 Javascript
jQuery实现查看图片功能
2020/12/01 jQuery
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
在Python操作时间和日期之asctime()方法的使用
2015/05/22 Python
请不要重复犯我在学习Python和Linux系统上的错误
2016/12/12 Python
python中实现k-means聚类算法详解
2017/11/11 Python
django输出html内容的实例
2018/05/27 Python
python-tkinter之按钮的使用,开关方法
2019/06/11 Python
python查找重复图片并删除(图片去重)
2019/07/16 Python
python Pillow图像处理方法汇总
2019/10/16 Python
浅谈keras 的抽象后端(from keras import backend as K)
2020/06/16 Python
CSS3 对过渡(transition)进行调速以及延时
2020/10/21 HTML / CSS
HTML5 Plus 实现手机APP拍照或相册选择图片上传功能
2016/07/13 HTML / CSS
巴西独家产品和现场演示购物网站:Shoptime
2019/07/11 全球购物
汽车专业大学生职业生涯规划范文
2014/01/07 职场文书
工程资料员岗位职责
2014/03/10 职场文书
会计专业求职信范文
2014/03/16 职场文书
捐资助学感谢信
2015/01/21 职场文书
2015年公司国庆放假通知
2015/07/30 职场文书
中秋节感想
2015/08/10 职场文书
严以用权学习心得体会
2016/01/12 职场文书