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)