【发布时间】:2011-08-03 07:21:40
【问题描述】:
我正在尝试做类似的事情:
$obj2 = $obj1
其中 $var1 是一个对象,问题是我希望 $obj2 像 $obj1 的快照 - 正是当时的样子,但是随着 $obj1 的变量的变化,$obj2 的变化也是如此。这甚至可能吗?还是我必须创建一个新的“虚拟”类才能创建克隆?
【问题讨论】:
标签: php class variables object clone
我正在尝试做类似的事情:
$obj2 = $obj1
其中 $var1 是一个对象,问题是我希望 $obj2 像 $obj1 的快照 - 正是当时的样子,但是随着 $obj1 的变量的变化,$obj2 的变化也是如此。这甚至可能吗?还是我必须创建一个新的“虚拟”类才能创建克隆?
【问题讨论】:
标签: php class variables object clone
只需克隆对象,如下所示:
$obj2 = clone $obj1;
上述声明后对$obj1成员的任何修改都不会反映在$obj2中。
【讨论】:
对象在 PHP 中通过引用传递。这意味着当您将对象分配给新变量时,该新变量包含对同一对象的引用,而不是对象的新副本。此规则适用于分配变量、将变量传递给方法以及将变量传递给函数。
在您的情况下,$obj1 和 $obj2 都引用同一个对象,因此修改其中任何一个都会修改同一个对象。
【讨论】: