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 相关文章推荐
PHP chmod 函数与批量修改文件目录权限
May 10 PHP
第4章 数据处理-php正则表达式-郑阿奇(续)
Jul 04 PHP
php 搜索框提示(自动完成)实例代码
Feb 05 PHP
浅谈web上存漏洞及原理分析、防范方法(文件名检测漏洞)
Jun 29 PHP
提高PHP性能的编码技巧以及性能优化详细解析
Aug 24 PHP
php curl post 时出现的问题解决
Jan 30 PHP
PDO防注入原理分析以及使用PDO的注意事项总结
Oct 23 PHP
PHP答题类应用接口实例
Feb 09 PHP
yii2使用ajax返回json的实现方法
May 14 PHP
Thinkphp5.0框架视图view的循环标签用法示例
Oct 12 PHP
浅谈php常用的7大框架的优缺点
Jul 20 PHP
PHP数组访问常用方法解析
Sep 05 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 文件上传模型,支持多文件上传
2009/08/13 PHP
PHP批量查询WordPress留言者E-mail地址实现方法
2015/02/15 PHP
PHP 反射(Reflection)使用实例
2015/05/12 PHP
参考:关于Javascript中实现暂停的几篇文章
2007/03/04 Javascript
jquery 多行文本框(textarea)高度变化
2013/07/03 Javascript
JavaScript 上万关键字瞬间匹配实现代码
2013/07/07 Javascript
在Javascript中处理字符串之big()方法的使用
2015/06/08 Javascript
javascript实现的简单计时器
2015/07/19 Javascript
jquery实现平滑的二级下拉菜单效果
2015/08/26 Javascript
JS原型链怎么理解
2016/06/27 Javascript
js中遍历Map对象的方法
2016/07/27 Javascript
Bootstrap轮播插件使用代码
2016/10/11 Javascript
javascript 作用于作用域链的详解
2017/09/27 Javascript
AngularJS实现的简单拖拽功能示例
2018/01/02 Javascript
详解使用Next.js构建服务端渲染应用
2018/07/10 Javascript
Vue 事件处理操作实例详解
2019/03/05 Javascript
如何在Vue中使localStorage具有响应式(思想实验)
2020/07/14 Javascript
Vue父子组件传值的一些坑
2020/09/16 Javascript
[00:35]DOTA2上海特级锦标赛 EG战队宣传片
2016/03/04 DOTA
Python中的Django基本命令实例详解
2018/07/15 Python
pytorch实现用Resnet提取特征并保存为txt文件的方法
2019/08/20 Python
基于keras中的回调函数用法说明
2020/06/17 Python
python中append函数用法讲解
2020/12/11 Python
基于HTML5+Webkit实现树叶飘落动画
2017/12/28 HTML / CSS
可爱的童装和鞋子:Fabkids
2019/08/16 全球购物
华硕新加坡官方网上商店:ASUS Singapore
2020/07/09 全球购物
南京某软件公司的.net面试题
2015/11/30 面试题
内科护士实习自我鉴定
2013/10/17 职场文书
大学生职业生涯规划范文——找准自我,定位人生
2014/01/23 职场文书
亮化工程实施方案
2014/03/17 职场文书
韩语专业职业生涯规划范文:成功之路就在我们脚下
2014/09/11 职场文书
民主评议政风行风整改方案
2014/09/17 职场文书
开展批评与自我批评发言稿
2014/10/16 职场文书
群众路线自我剖析范文
2014/11/04 职场文书
满月酒邀请函
2015/01/30 职场文书
DIY胆机必读:各国电子管评价
2022/04/06 无线电