- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章PHP对象的浅复制与深复制的实例详解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
PHP对象的浅复制与深复制的实例详解 。
最近在看原型模式时注意到这个问题~~PHP中对象 '=' 与‘clone'的区别 。
实例代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
//聚合类
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>
|
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持! 。
原文链接:http://blog.csdn.net/dizzthxl/article/details/7688744 。
最后此篇关于PHP对象的浅复制与深复制的实例详解的文章就讲到这里了,如果你想了解更多关于PHP对象的浅复制与深复制的实例详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
免责声明 这篇文章是关于术语“浅拷贝”和“深拷贝”的正确用法,特别是在谈论复制一个不包含任何引用的对象时。这个问题并不意味着(也不应该)基于意见,除非真的没有关于这个话题的共识。我已将此问题标记为 C
我有这个功能 int getrelation(string name, RELATION& output){ bool found=0; int index=0;
与 why should I make a copy of a data frame in pandas 有关 我注意到在流行的backtesting图书馆, def __init__(self, d
我的问题很基础,但我想 100% 理解所有内容。 SO中的很多问题都引用了我的帖子,但我没有找到满意的答案。 我们知道java中的枚举是引用类型。让我们考虑以下片段: public static cl
请引用这个 fiddle 的问题。 http://jsfiddle.net/AQR55/ 1)为什么附加到隔离范围属性的 watch - 双向绑定(bind)到父属性,不会在更改父范围属性时触发。 在
我想使用 UP3 来完成一项非常具体的任务,我应该能够使用 API 来实现该任务。我想了解是否可以编写以下应用程序。 基于https://jawbone.com/support/articles/00
如何在辅助方法中传递上下文并提取数据? 请参阅以下代码片段: import AppContext from '../../context/AppContext' import extractDatta
我正在尝试使用 simple-git 创建浅克隆。我正在尝试创建与此命令等效的命令:git clone --depth 1 https://github.com/steveukx/git-js.git
我是一名优秀的程序员,十分优秀!