这意味着当克隆对象时,作为引用变量的任何属性(引用其他对象而不是值的变量)将保持引用.
"非浅"克隆会将新对象设置为这些属性的值,而不是将它们作为引用.
注意:这意味着您对克隆对象中的这些引用所做的任何更改也将对它们在"父"对象中引用的值进行更改.
简而言之:克隆将保留与其克隆的原始对象相同的引用。像字符串或整数这样的基本类型永远不会是引用(在 php 中),如果您完全更改一个引用(通过用另一个属性替换属性的对象),这也不会影响原始对象。每个属性都将包含与另一个对象的同名属性相同的对象,而不仅仅是相同的对象。
要创建非吞咽副本,您必须实现__clone(). 这是在克隆后对克隆对象调用的。
public function __clone () {
$this->myObject = clone $this->myObject;
// and so on
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1744 次 |
| 最近记录: |