qq_不善丶真言_0
2015-03-27 21:09
比如说有两个对象都是同一个原型clone出来的,如果修改了一个对象的值,另一个会不会受到影响,应该会吧。。。
并不会,clone出来的对象已经是另一个对象了,就比如我执行下面的代码
class Animal{ public $name = "Cat"; } $cat = new Animal(); echo $cat->name."\n"; $dog = clone $cat; echo $dog->name."\n"; $dog->name = "Dog"; echo $dog->name."\n"; var_dump($dog); var_dump($cat);
然后在运行的结果如下:
Cat Cat Dog object(Animal)#2 (1) { ["name"]=> string(3) "Dog" } object(Animal)#1 (1) { ["name"]=> string(3) "Cat" } [Finished in 0.3s]
注意,我var_dump出来的两个对象的#后面的id值是不同的,也就是说这是两个不同的对象,那么改变了Dog对象的name值也不会对Cat对象造成影响。
PHP的clone是浅复制,克隆的新对象只是源对象的引用
一样的疑惑,如果是指针的话,我也觉得会
大话PHP设计模式
62160 学习 · 230 问题
相似问题