В PHP мы используем оператор & для получения ссылки на переменная. Я понимаю ссылку как способ сослаться на одну и ту же «вещь» с другой переменной. Если я скажу например
Код: Выделить всё
$b = 1;
$a =& $b;
$a = 3;
echo $b;
Код: Выделить всё
$b = 1;
$a = $b;
$a = 3;
echo $b;
Если это так, то зачем нужно ключевое слово clone? Мне кажется, если я поставлю
Код: Выделить всё
$obj_a = $obj_b
и наоборот, $obj_a =& $obj_b должен указывать на тот же объект, поэтому изменения, внесенные в $obj_a, влияют на $obj_b.
Однако в PHP некоторые операции над $obj_a ДЕЙСТВИТЕЛЬНО влияют на $obj_b, даже если они назначены без ссылочного оператора ($obj_a = $obj_b). Сегодня при работе с объектами DateTime у меня возникла неприятная проблема, которую я в конечном итоге исправил, выполнив следующие действия:
Код: Выделить всё
$obj_a = clone $obj_b
Подробнее здесь: https://stackoverflow.com/questions/361 ... -reference