eme*_*his 2 php pass-by-reference
在PHP中,对象通过引用自动传递:
$obj1 = new stdClass();
$obj1->foo = 'bar';
$obj2 = $obj1;
$obj2->foo = 'OOF';
var_dump($obj1->foo); // OOF
Run Code Online (Sandbox Code Playgroud)
是否有一种优雅的方式来复制该变量而不是引用原始变量?我想存储一个对象的副本,然后修改它而不影响原始对象.谢谢.
您可以克隆该对象:
$obj2 = clone $obj1;
Run Code Online (Sandbox Code Playgroud)
请注意,这$obj2将是一个浅的副本$obj1.如PHP手册中所述:
克隆对象时,PHP 5将执行所有对象属性的浅表副本.任何引用其他变量的属性都将保留引用.
__clone()如果愿意,您可以覆盖方法以手动克隆任何子对象.