如何通过引用传递PHP对象

时间:2016-08-04 16:23:19

标签: php pass-by-reference

在PHP中,对象通过引用自动传递:

$obj1 = new stdClass();
$obj1->foo = 'bar';
$obj2 = $obj1;
$obj2->foo = 'OOF';
var_dump($obj1->foo); // OOF

是否有一种优雅的方式来复制该变量而不是引用原始变量?我想存储一个对象的副本,然后修改它而不影响原始对象。感谢。

1 个答案:

答案 0 :(得分:8)

你可以clone对象:

:

请注意,$obj2 = clone $obj1; 将是$obj2的浅表副本。如PHP手册中所述:

  

当克隆一个对象时,PHP 5将执行所有的浅层副本   对象的属性。任何引用其他的属性   变量仍然是参考。

如果愿意,您可以覆盖$obj1方法手动克隆任何子对象。