【问题标题】:Stop new object from updating with old object's variables阻止新对象使用旧对象的变量进行更新
【发布时间】:2011-08-03 07:21:40
【问题描述】:

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

$obj2 = $obj1

其中 $var1 是一个对象,问题是我希望 $obj2 像 $obj1 的快照 - 正是当时的样子,但是随着 $obj1 的变量的变化,$obj2 的变化也是如此。这甚至可能吗?还是我必须创建一个新的“虚拟”类才能创建克隆?

【问题讨论】:

    标签: php class variables object clone


    【解决方案1】:

    只需克隆对象,如下所示:

    $obj2 = clone $obj1;
    

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

    【讨论】:

    • 太棒了,我现在觉得自己很愚蠢,哈哈。谢谢,这比我希望的更容易/更好!
    【解决方案2】:

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

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

    【讨论】:

    • @KingCrunch 谢谢你的链接。在谈到 PHP 中的引用时,我肯定不会使用“指针”这个词。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-08
    相关资源
    最近更新 更多