PHP执行深度对象复制/克隆的最佳方式是什么?
我找到了一些使用序列化的例子,我认为这些例子会遇到一些问题。
答案 0 :(得分:7)
如果您拥有对课程的完全访问权限,则可以在所有课程中实施__clone()
,然后使用clone
关键字。否则,clone
关键字将只创建最顶层对象的浅表副本,而此对象中的潜在引用将继续指向其原始目标。 __clone()
方法还为您提供了更多控制,但如果您不明确处理它们,可能会创建带有循环引用的无限循环。
序列化技术通常有效,不会因循环引用而死,但在内存和CPU方面更为昂贵。