Php 克隆功能更改对象的值,复制的对象创建引用?

Php 克隆功能更改对象的值,复制的对象创建引用?,php,clone,Php,Clone,$objM1的值是否更改?可能。这取决于类的实现方式 clone创建对象的浅拷贝。这意味着它将创建另一个相同类型的对象,然后复制所有属性。如果此类属性是对象,则克隆的父对象将引用与原始对象相同的对象实例。因此,如果要修改该对象,这将反映在两个对象上 另一种可能性是setData设置static属性而不是实例属性,在这种情况下,更改也将反映在两个实例中 但是,如果您只是在对象上设置整数属性,那么这两个实例的属性将是独立的。您到底在说什么?您真的不能检查吗?只需打印所有对象,然后看看会发生什么。顺便

$objM1的值是否更改?

可能。这取决于类的实现方式

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

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


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

您到底在说什么?您真的不能检查吗?只需打印所有对象,然后看看会发生什么。顺便说一句,克隆不通过引用创建对象,这是克隆之前的问题。$objM1=new clsData(22,33)$objM2=克隆$objM1$objM1->getData()$objM2->getData()$objM2->setData(4,5);//在此之后,$objM2和$objM1的值是否相同$objM1->getData()$objM2->getData()@我同意你的看法
   $objM1= new clsData(22,33);

   $objM2= clone $objM1;

   $objM2->setData(4,5);