学科分类
目录
PHP基础

对象的浅复制

PHP中的变量默认是传值赋值,通过赋值运算符(=)可以得到两个值相同的变量,当一个变量的值改变时,另一个变量的值不变。但是,默认情况下,PHP中的对象赋值操作,仅实现了同一个标识符的复制,这个标识符指向同一个对象的内容,与引用赋值的效果类似,这种操作在PHP的面向对象中称之为浅复制(shallow copy)。

下面通过代码演示对象的浅复制,示例代码如下。

 1  class Person
 2  {
 3    public $age = 1; 
 4  }
 5  $object1 = new Person();
 6  $object2 = $object1;
 7  $object1->age = 10;
 8  var_dump($object1->age);  // 输出结果:int(10)
 9  var_dump($object2->age);  // 输出结果:int(10)

在上述代码中,第5行用于实例化一个对象$object1,第6行将对象$object1赋值给$object2。第7行代码修改$object1的属性age值为10后,通过第8~9行代码查看对象$object1与$object2中的age属性值,从输出结果可以看出,它们的值同时变为了10。

点击此处
隐藏目录