PHP在使用=
时是否复制了一个对象,还是只创建一个指向已存在对象的新指针?
两者都是一样的吗?
$obj1 = new object();
$obj2 = $obj1;
$obj1 = new object();
$obj2 = clone $obj1;
答案 0 :(得分:5)
在PHP 4(即古代历史)中,对象确实被复制了。这不是有用的行为。
自PHP 5起,现在通过引用分配对象,除非它们被克隆。
您可以轻松测试:
$obj1 = new object();
$obj2 = $obj1;
var_dump($obj1 === $obj2); // bool(true)
$obj1 = new object();
$obj2 = clone $obj1;
var_dump($obj1 === $obj2); // bool(false)