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

在 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 是不同的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值