用户登录

在 PHP 里面,复制一个对象,其实就是去引用一个对象,如果你改变了复制的对象里的属性,原来被复制的对象也会改变。也就是这两个对象引用的其实是一个东西,改变了其中的一个,另一个也会跟着改变。

如果想真正的去复制一个对象,我们可以使用克隆,这样两个对象会是完全不同的东西,相互没有任何的影响。下面我们可以通过几个演示来理解一下复制和克隆对象。

先去创建一个 Track 对象的实例 ... 叫它 magic ... 再去设置一下这个对象的 track_name 属性的值。

$magic = new Track();
$magic->track_name = 'Magic';

下面,我们可以去复制一份这个 magic 对象 ... 叫做 magic_mix ..

$magic_mix = $magic;

再把这两个对象使用 print_r 输出到屏幕上 ...

print_r($magic);
print_r($magic_mix);

你会看到这们的 track_name 这个属性的值都是 Magic 这个字符串 ... 下面,我们可以再去修改一下 ... 回到 index.php ... 去改一下复制的这个 $magic_mix 这个对象的 track_name 属性的值 ... 改成 Magic Mix

$magic_mix->track_name = 'Magic Mix';

保存 ... 回到浏览器 ... 现在 ... magic 还有 magic_mix 这两个对象里的 track_name 这个属性的值 ... 都会是Magic Mix .... 因为这两个对象指向的是同一个东西 ... 所以,我们使用 magic_mix 这个对象改变了 track_name 的值 ... 另外那个 magic 对象也会受到影响 ...

想要它们互不相干的话 ... 可以使用克隆 ...

使用 clone 这个关键词 ... 去克隆一个 magic 对象 ... 然后把这个克隆之后的对象交给 magic_mix ...

在下面,还是修改一下 magic_mix 里的 track_name ...

再回到浏览器 ....

这回你会发现 ... magic 对象里面的 track_name ,还有 magic_mix 这个对象里面的 track_name 是不同的值。

复制与克隆对象《 PHP 面向对象 》

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点