Рассмотрим следующее:
$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) { }
Является ли это обычным поведением PHP, что $object2
имеет контент, идентичный $object1
?
Мне кажется, что $object2
является ссылкой на $object1
вместо копии.
Клонирование объекта перед изменением содержимого действует как копия.
Такое поведение отличается от того, что происходит с переменными, и кажется мне неинтуитивным.