对象的浅复制
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。