使用旧对象的变量更新新对象

时间:2011-04-11 18:35:23

标签: php class variables object clone

我正在尝试做类似的事情:

$obj2 = $obj1

其中$ var1是一个对象,问题是我希望$ obj2像$ obj1的快照一样 - 就在那一刻它是如何,但是当$ obj1的变量发生变化时,$ obj2的变化也是如此。这甚至可能吗?或者我将不得不创建一个新的“虚拟”类,以便我可以创建一个克隆?

2 个答案:

答案 0 :(得分:7)

简单地克隆对象,如下所示:

$obj2 = clone $obj1;

在上述声明之后对$obj1成员的任何修改都不会反映在$obj2中。

答案 1 :(得分:1)

在PHP中通过引用传递对象。这意味着当您将对象分配给新变量时,该新变量包含对同一对象的引用,而不是该对象的新副本。在分配变量,将变量传递给方法以及将变量传递给函数时,此规则适用。

在您的情况下,$obj1$obj2都引用同一个对象,因此修改任何一个都将修改同一个对象。