在PHP中,对象通过引用自动传递:
$obj1 = new stdClass();
$obj1->foo = 'bar';
$obj2 = $obj1;
$obj2->foo = 'OOF';
var_dump($obj1->foo); // OOF
是否有一种优雅的方式来复制该变量而不是引用原始变量?我想存储一个对象的副本,然后修改它而不影响原始对象。感谢。
答案 0 :(得分:8)
你可以clone对象:
:
请注意,$obj2 = clone $obj1;
将是$obj2
的浅表副本。如PHP手册中所述:
当克隆一个对象时,PHP 5将执行所有的浅层副本 对象的属性。任何引用其他的属性 变量仍然是参考。
如果愿意,您可以覆盖$obj1
方法手动克隆任何子对象。