clone函数改变对象的值并复制对象创建引用?

时间:2014-05-23 13:05:50

标签: php clone

   $objM1= new clsData(22,33);

   $objM2= clone $objM1;

   $objM2->setData(4,5);

$objM1的值是否会改变?

1 个答案:

答案 0 :(得分:1)

可能。这取决于课程的实施方式。

clone生成对象的副本。这意味着它将创建另一个相同类型的对象,然后复制所有属性。如果此类属性是对象,则克隆的父对象将引用与原始对象相同的对象实例。因此,如果您要修改该对象,则会反映两个对象。

另一种可能性是setData设置static属性而不是实例属性,在这种情况下,更改也会反映在两个实例中。

但是,如果您只是在对象上设置整数属性,那么这两个实例将是独立的。