我有一个 $objDummy 类的对象 ClassDummy ,另一个是
$objClone = clone $objDummy;
然后我对 $objClone 进行了任何更改,$objDummy 也更改了。
我不想那样做。
我怎样才能让它发挥作用?

编辑:
作为对克里斯的回应。
这是一个例子

<?php
class myAnotherObject{
    public $myAnotherVar =10;
}

class myObject {
    public $myVar = false;
    function __construct() {
        $this->myVar = new myAnotherObject();
    }
}


$nl = "\n";
//*
$nl = '<br />';
//*/


$obj1 = new myObject();
echo 'obj1->myVar->myAnotherVar: '.$obj1->myVar->myAnotherVar;

$obj2 = clone $obj1;

echo $nl.'obj1->myVar->myAnotherVar: '.$obj1->myVar->myAnotherVar.', obj2->myVar->myAnotherVar: '.$obj2->myVar->myAnotherVar;

$obj2->myVar->myAnotherVar = 20;
echo $nl.'obj1->myVar->myAnotherVar: '.$obj1->myVar->myAnotherVar.', obj2->myVar->myAnotherVar: '.$obj2->myVar->myAnotherVar;

输出是
obj1->myVar->myAnotherVar: 10
obj1->myVar->myAnotherVar: 10, obj2->myVar->myAnotherVar: 10
obj1->myVar->myAnotherVar: 20, obj2->myVar->myAnotherVar: 20

最佳答案

您是否正在实现 __clone() 方法? PHP documentation on cloning 中的示例将比我能更好地解释这一点。特别是你对这部分感兴趣,



更新
根据您对问题的更新,您确实缺少 __clone() 的实现。由于 $myVarmyObject 成员本身就是一个对象,因此您也需要对其进行克隆。这是你的 myObject 类应该是什么样子,

class myObject {
    public $myVar = false;
    function __construct() {
        $this->myVar = new myAnotherObject();
    }

    function __clone() {
        $this->myVar = clone $this->myVar;
    }
}

输出然后变成以下,
obj1->myVar->myAnotherVar: 10
obj1->myVar->myAnotherVar: 10, obj2->myVar->myAnotherVar: 10
obj1->myVar->myAnotherVar: 10, obj2->myVar->myAnotherVar: 20

10-07 18:25