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安全编程之加密功能
Oct 09 PHP
PHP 中执行排序与 MySQL 中排序
Apr 21 PHP
PHP排序算法的复习和总结
Feb 15 PHP
php 的加密函数 md5,crypt,base64_encode 等使用介绍
Apr 09 PHP
使用dump函数,给php加断点测试
Jun 25 PHP
php不允许用户提交空表单(php空值判断)
Nov 12 PHP
为PHP5.4开启Zend OPCode缓存
Dec 26 PHP
PHP实现的json类实例
Jul 28 PHP
8个必备的PHP功能开发
Oct 02 PHP
PHP 7.1中AES加解密方法mcrypt_module_open()的替换方案
Oct 17 PHP
PHP中如何使用Redis接管文件存储Session详解
Nov 28 PHP
PHP lcfirst()函数定义与用法
Mar 08 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
全国FM电台频率大全 - 21 海南省
2020/03/11 无线电
php array_merge函数使用需要注意的一个问题
2015/03/30 PHP
PHP中类属性与类静态变量的访问方法示例
2016/07/13 PHP
php ajax数据传输和响应方法
2018/08/21 PHP
Fixie.js 自动填充内容的插件
2012/06/28 Javascript
这些年、我收集的JQuery代码小结
2012/08/01 Javascript
第一章之初识Bootstrap
2016/04/25 Javascript
Bootstrap Table的使用总结
2016/10/08 Javascript
常用Javascript函数与原型功能收藏(必看篇)
2016/10/09 Javascript
Angular 2父子组件数据传递之@ViewChild获取子组件详解
2017/07/04 Javascript
原生js实现简单的焦点图效果实例
2017/12/14 Javascript
vue watch监听对象及对应值的变化详解
2018/02/24 Javascript
为什么说JavaScript预解释是一种毫无节操的机制详析
2018/11/18 Javascript
[47:06]DOTA2上海特级锦标赛主赛事日 - 4 败者组第五轮 MVP.Phx VS EG第一局
2016/03/05 DOTA
[01:54]TI珍贵瞬间系列(五):压力
2020/08/29 DOTA
Python中使用ConfigParser解析ini配置文件实例
2014/08/30 Python
python 连接sqlite及简单操作
2017/06/30 Python
解析Python中的eval()、exec()及其相关函数
2017/12/20 Python
Python Logging 日志记录入门学习
2018/06/02 Python
对Python Class之间函数的调用关系详解
2019/01/23 Python
python把转列表为集合的方法
2019/06/28 Python
Python CVXOPT模块安装及使用解析
2019/08/01 Python
django2.2 和 PyMySQL版本兼容问题
2020/02/17 Python
简单的Python人脸识别系统
2020/07/14 Python
美国男女折扣服饰百货连锁店:Stein Mart
2017/05/02 全球购物
Expedia印度尼西亚站:预订酒店、廉价航班和度假套餐
2018/01/31 全球购物
俄罗斯美容和健康网上商店:Созвездие Красоты
2019/07/23 全球购物
高二英语教学反思
2014/01/19 职场文书
企业车辆管理制度
2014/01/24 职场文书
《美丽的黄昏》教学反思
2014/02/28 职场文书
秋天的雨教学反思
2014/04/27 职场文书
干部对照检查材料范文
2014/08/26 职场文书
刘胡兰观后感
2015/06/16 职场文书
男方家长婚礼致辞
2015/07/27 职场文书
Keras多线程机制与flask多线程冲突的解决方案
2021/05/28 Python
戴尔Win11系统no bootable devices found解决教程
2022/09/23 数码科技