第五节:PHP对象复制

PHP面向对象编程基础

PHP对象复制,从一个类创建一个对象并复制它几次可能是有用的。要知道PHP如何处理复制,默认情况下,对象是通过引用而不是按值复制的,但这到底意味着什么呢?在多数情况下,我们并不需要完全复制一个对象来获得其中属性。

但有一个情况下确实需要:如果你有一个 GTK 窗口对象,该对象持有窗口相关的资源。你可能会想复制一个新的窗口,保持所有属性与原来的窗口相同,但必须是一个新的对象(因为如果不是新的对象,那么一个窗口中的改变就会影响到另一个窗口)。还有一种情况:如果对象 A 中保存着对象 B 的引用,当你复制对象 A 时,你想其中使用的对象不再是对象 B 而是 B 的一个副本,那么你必须得到对象 A 的一个副本。

对象复制可以通过 clone 关键字来完成(如果可能,这将调用对象的 __clone() 方法)。对象中的 __clone() 方法不能被直接调用。

PHP对象复制-实例演示

PHP对象复制-实例演示

PHP对象复制-实例演示

举例子说明,让我们创建一个$peter的兄弟叫$sam:

因为$sam是从$peter复制过来的,所以$peter和$sam输出结果是相同的:

$sam和$peter的对象兄弟关系,当我修改sam的电子邮件地址时会发生什么?

看到peter和sam的电子邮件地址都发生了变化都改改为sam@linyongmin.com:

如果我再次修改$peter的地址邮箱地址:

同样sam和peter的电子邮箱地址也跟着改变:

所以如果我想从用户创建一个副本,但是我们希望只能够更改该特定副本的电子邮件地址,那么在这种情况下,你需要通过复制对象的值,并使用clone来完成此操作,把$sam=$peter修改为$sam=clone $peter,代码如下:

clone把$sam和$peter成为两个完全分开的对象,现在我们已经把$sam和$peter电子邮件地址设置为两个不同的值,看他们在没有联系了,他们可以有不同的电子邮件地址,密码等等.

这就是PHP对象复制。

下载本课堂完整源码

接近10年的互联网从业经验,精通Scrum敏捷软件开发的方法,从事互联网产品设计,开发,测试,运营,案例不少于20个,发现自己最喜欢的工作是做外贸营销,外贸SEO,特别喜欢谷歌优化。从2017年3月开始坚持在群161510483直播谷歌SEO和WEB前端开发技术,只要加进来坚持学习零基础也能够学会。

Last modified: 2019年3月24日

Previous Story

PHP面向对象编程基础

第四节:PHP变量作用域公共属性与私有属性

PHP变量作用域:公共与私有属性或方法的访问控制,被定义为公有的类成员可以在任何地方被访问.被定义为受保护的类成员则可以被其自身以及其子类和父类访问.

...

Next Story

PHP面向对象编程基础

第六节:php面向对象编程单一功能原则

单一功能原则:面向对象编程领域规定每个类都应该有一个单一功能,并且该功能应该由这个类完全封装起来.所有它的(这个类的)服务都应该严密的和该功能平行(功能平行意味着没有依赖).

...