PHP是否在分配时复制对象?

时间:2013-11-14 18:15:43

标签: php

PHP在使用=时是否复制了一个对象,还是只创建一个指向已存在对象的新指针?

两者都是一样的吗?

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

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

1 个答案:

答案 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)