clone和=&的区别
我记得之前学习变量的时候有说到=和=&的区别。
$a = 10;
$b = $a; //赋值,内容相同,地址不同。
$c =& $a; //引用赋值,两个变量都指向同一个数据,共享同一块内存。
所以当$a变化的时候,$c会跟着变化,而$b保持原来的值不变。
*******************************************************************
那为什么到了对象这边就不一样了呢?
$obj1 = $obj; 引用,两个对象变量指向同一对象,当改变$Object1对象时,$Object2也做相同的变化。
(如果这个成立,那之前说到析构函数的时候,为什么当$obj=null的时候,$obj1没有跟着变化?如果都变化了,那应该触发析构函数了;而老师当时说要 $obj1=&$obj,这样$obj=null的时候才会直接触发析构函数。)
$obj1 = clone $obj; 克隆,克隆的对象$Object1与原来的对象没有任何关系,它是将原来的对象从当前位置从新复制了一份。
(这个听上去就和变量赋值$b = $a一模一样诶。难道对象实例化之后赋值给$obj,这个$obj不是一个变量么?)