我正在尝试做类似的事情:
$obj2 = $obj1
其中$ var1是一个对象,问题是我希望$ obj2像$ obj1的快照一样 - 就在那一刻它是如何,但是当$ obj1的变量发生变化时,$ obj2的变化也是如此。这甚至可能吗?或者我将不得不创建一个新的“虚拟”类,以便我可以创建一个克隆?
答案 0 :(得分:7)
简单地克隆对象,如下所示:
$obj2 = clone $obj1;
在上述声明之后对$obj1
成员的任何修改都不会反映在$obj2
中。
答案 1 :(得分:1)
在PHP中通过引用传递对象。这意味着当您将对象分配给新变量时,该新变量包含对同一对象的引用,而不是该对象的新副本。在分配变量,将变量传递给方法以及将变量传递给函数时,此规则适用。
在您的情况下,$obj1
和$obj2
都引用同一个对象,因此修改任何一个都将修改同一个对象。