当__clone()方法的结果是“浅克隆”时,这意味着仅复制对象本身,而不会复制对象中包含的引用类型属性。
这意味着当对象被克隆时,任何作为引用变量(指引用其他对象而不是值的变量)的属性将保持引用。
一个“非浅层”克隆会将新对象的属性设置为这些属性的值,而不是保留它们作为引用。
注意:这意味着您对克隆对象中这些引用所做的任何更改也会对“父”对象中它们引用的值进行更改。
要创建非浅拷贝,必须实现__clone()
。这将在克隆后调用克隆对象。
public function __clone () {
$this->myObject = clone $this->myObject;
// and so on
}