最新消息:周一至周五21:30分QQ群(161510483)直播,零基础免费学谷歌SEO,WEB前端,PHP入门教程

第五节:PHP对象复制

PHP面向对象编程基础 林雍岷 127浏览

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的电子邮件地址都发生了变化都改改为[email protected]

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

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

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

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

这就是PHP对象复制。

下载本课堂完整源码

转载请注明:林雍岷 » 第五节:PHP对象复制