如何通过引用传递 PHP 对象
How to pass a PHP object NOT by reference
在PHP中对象自动通过引用传递:
$obj1 = new stdClass();
$obj1->foo = 'bar';
$obj2 = $obj1;
$obj2->foo = 'OOF';
var_dump($obj1->foo); // OOF
有没有一种优雅的方法来复制该变量而不是引用原始变量?我想存储一个对象的副本,然后在不影响原始对象的情况下对其进行修改。谢谢
您可以clone对象:
$obj2 = clone $obj1;
请注意 $obj2
将是 $obj1
的浅拷贝。如 PHP 手册所述:
When an object is cloned, PHP 5 will perform a shallow copy of all of
the object's properties. Any properties that are references to other
variables will remain references.
如果您愿意,您可以覆盖 __clone()
方法以手动克隆任何子对象。
在PHP中对象自动通过引用传递:
$obj1 = new stdClass();
$obj1->foo = 'bar';
$obj2 = $obj1;
$obj2->foo = 'OOF';
var_dump($obj1->foo); // OOF
有没有一种优雅的方法来复制该变量而不是引用原始变量?我想存储一个对象的副本,然后在不影响原始对象的情况下对其进行修改。谢谢
您可以clone对象:
$obj2 = clone $obj1;
请注意 $obj2
将是 $obj1
的浅拷贝。如 PHP 手册所述:
When an object is cloned, PHP 5 will perform a shallow copy of all of the object's properties. Any properties that are references to other variables will remain references.
如果您愿意,您可以覆盖 __clone()
方法以手动克隆任何子对象。