在创建对象的时候(使用new关键字),返回的值是一个指向对象的句柄,或者换言之,就是对象的ID号。这跟PHP4是不一样的,在PHP4中返回的值就是对象本身。而调用方法或者访问属性的语法被改变了,只是对象在复制的时候意义被更改了。
class MyClass{
public $var=1;
}
$obj1=new MyClass();
$obj2=$obj1;
$obj2->var=2;
print $obj1->var;
PHP4中,结果是1.
PHP5中,结果是2.
当需要拷贝对象的时候,用语言命令clone。这个内置的的操作符会自动创建一个新的对象实例,并且附带原对象的所有属性,对象的属性的值也会被原样复制。另外,还可以定义一个_clone()方法来执行任何最后的操作,它在新创建的对象中被调用。
如果上面的$obj2=clone $obj1;
那么,运行结果就是1.