克隆函数改变对象的值,被复制的对象创建引用


clone function change the value of object and copied object creates reference?

   $objM1= new clsData(22,33);
   $objM2= clone $objM1;
   $objM2->setData(4,5);

$objM1的值变化吗?

可能吧。这取决于如何实现类。

clone对对象进行复制。这意味着它将创建另一个相同类型的对象,然后复制所有属性。如果这样的属性是一个对象,那么克隆的父对象将引用与原始对象相同的对象实例。所以如果你在修改那个对象,这将在两个对象上反射。

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

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