Я знаю, что это описано в php docs, но я смутился с этой проблемой.
Из php-документов:
$instance = new SimpleClass();
$assigned = $instance;
$reference =& $instance;
$instance->var = '$assigned will have this value';
$instance = null; // $instance and $reference become null
var_dump($instance);
var_dump($reference);
var_dump($assigned);
?>
Вышеприведенный пример выводит:
NULL
NULL
object(SimpleClass)#1 (1) {
["var"]=>
string(30) "$assigned will have this value"
}
ОК, поэтому я вижу, что $assigned
сохранило исходный объект ($instance
), присвоенный null
, поэтому, очевидно, $assigned
не является ссылкой, а копией экземпляра $.
Так в чем разница между
$assigned = $instance
и
$assigned = clone $instance