PHP对象的浅复制与深复制的实例详解
发布:smiling 来源: PHP粉丝网 添加日期:2021-08-16 10:44:35 浏览: 评论:0
这篇文章主要介绍了PHP对象的浅复制与深复制的实例详解的相关资料,希望通过本文能帮助到大家,让大家理解掌握这部分内容,需要的朋友可以参考下。
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>
Tags: PHP对象浅复制 PHP对象深复制
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)