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 正则表达式小结
Aug 31 PHP
php 提速工具eAccelerator 配置参数详解
May 16 PHP
基于PHP字符串的比较函数strcmp()与strcasecmp()的使用详解
May 15 PHP
解析posix与perl标准的正则表达式区别
Jun 17 PHP
destoon网站转移服务器后搜索汉字出现乱码的解决方法
Jun 21 PHP
php使用pdo连接并查询sql数据库的方法
Dec 24 PHP
php解析xml方法实例详解
May 12 PHP
php获取一定范围内取N个不重复的随机数
May 28 PHP
Yii2数据库操作常用方法小结
May 04 PHP
Yii框架创建cronjob定时任务的方法分析
May 23 PHP
YII框架页面缓存操作示例
Apr 29 PHP
PHP7数组的底层实现示例
Aug 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
风味层面去分析咖啡油脂
2021/03/03 咖啡文化
PHP stristr() 函数(不区分大小写的字符串查找)
2010/06/03 PHP
Laravel日志用法详解
2016/10/09 PHP
基于jQuery的消息提示插件之旅 DivAlert(三)
2010/04/01 Javascript
jQuery EasyUI API 中文文档 - PropertyGrid属性表格
2011/11/18 Javascript
ASP.NET jQuery 实例17 通过使用jQuery validation插件校验ListBox
2012/02/03 Javascript
左侧是表头的JS表格控件(自写,网上没有的)
2013/06/04 Javascript
关于img的href和src取变量及赋值的方法
2014/04/28 Javascript
js在指定位置增加节点函数insertBefore()用法实例
2015/01/12 Javascript
jquery实现页面加载效果
2017/02/21 Javascript
angular.js+node.js实现下载图片处理详解
2017/03/31 Javascript
Vue如何引入远程JS文件
2017/04/20 Javascript
基于AngularJS的简单使用详解
2017/09/10 Javascript
在Webpack中用url-loader处理图片和字体的问题
2020/04/28 Javascript
解决vue打包报错Unexpected token: punc的问题
2020/10/24 Javascript
在antd4.0中Form使用initialValue操作
2020/11/02 Javascript
使用python开发vim插件及心得分享
2014/11/04 Python
Python学习思维导图(必看篇)
2017/06/26 Python
Python实现将HTML转换成doc格式文件的方法示例
2017/11/20 Python
python制作简单五子棋游戏
2019/06/18 Python
10分钟用python搭建一个超好用的CMDB系统
2019/07/17 Python
django基于cors解决跨域请求问题详解
2019/08/06 Python
Python 实现自动获取种子磁力链接方式
2020/01/16 Python
python有几个版本
2020/06/17 Python
纯CSS3发光分享按钮的实现教程
2014/09/06 HTML / CSS
初级Java程序员面试题
2016/03/03 面试题
告诉你怎样写创业计划书
2014/01/27 职场文书
会计专业自我鉴定
2014/02/10 职场文书
职业规划实施方案
2014/06/10 职场文书
生活小常识广播稿
2014/09/16 职场文书
自习课吵闹检讨书范文
2014/09/26 职场文书
开展党的群众路线教育实践活动情况汇报
2014/11/05 职场文书
保护校园环境倡议书
2015/04/28 职场文书
晚会主持人开场白台词
2015/05/28 职场文书
六年级语文教学反思
2016/03/03 职场文书
浅谈:电影《孔子》观后感(范文)
2019/10/14 职场文书