PHP 在赋值时是否重复对象


Does PHP duplicate objects on assignment?

PHP 在使用=时会复制对象,还是只是创建一个指向现有对象的新指针?

这两者是一样的吗?

$obj1 = new object(); 
$obj2 = $obj1;
$obj1 = new object(); 
$obj2 = clone $obj1;

在 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)