6.10.5 克隆对象
PHP提供了clone关键字,该关键字允许复制一个已有的对象。例如:
$c=clone$b;
将创建与对象$b具有相同类的副本,而且具有相同的属性值。
也可以改变这种行为。如果不需要克隆过来的默认行为,必须在基类中创建一个clone()方法。这个方法类似于构造函数或析构函数,因为不会直接调用它。当以上例所示的方式使用clone关键字时,该方法将被调用。在clone()方法中,可以定义所需要的确切复制行为。
__clone()方法的一个很好特性就是在使用默认行为创建一个副本后能够被调用,这样,在这个阶段,可以只改变希望改变的内容。
在clone()方法中添加的最常见功能就是确保作为引用进行处理的类属性能够正确地复制。如果要克隆一个包含有对象引用的类,可能需要获得该对象的第二个副本,而不是该对象的第二个引用,因此这就是为什么要在clone()方法中添加该代码的原因。
我们可能会选择在该方法中执行一些其他操作,例如更新与该类相关的数据库记录。