考虑以下:
$object1 = new stdClass();
$object2 = $object1;
$object3 = clone $object1;
$object1->content = 'Ciao';
var_dump($object1);
// Outputs object(stdClass)#1 (1) { ["content"]=> string(4) "Ciao" }
var_dump($object2);
// Outputs object(stdClass)#1 (1) { ["content"]=> string(4) "Ciao" }
var_dump($object3);
// Outputs object(stdClass)#2 (0) { }
Run Code Online (Sandbox Code Playgroud)
这是一个正常的PHP行为,$object2其内容是否相同$object1?
对我来说,这听起来像是$object2一个参考$object1而不是副本.在更改内容之前克隆对象确实就像一个副本.这种行为与变量发生的情况不同,对我来说似乎不直观.