PHP で深いオブジェクトのコピー/クローンを実行するための最も受け入れられている方法は何ですか?
いくつかの問題があると思われるシリアライズを使用した例をいくつか見つけました。
クラスに完全にアクセスできる場合は__clone()
、それらすべてに実装してからclone
キーワードを使用できます。それ以外の場合、clone
キーワードは最上位のオブジェクトの浅いコピーを作成するだけで、このオブジェクト内の潜在的な参照は元のターゲットを指し続けます。この__clone()
メソッドを使用すると、より多くの制御が可能になりますが、循環参照を明示的に処理しないと、循環参照で無限ループが発生する可能性があります。
シリアライゼーション手法は一般的に機能し、循環参照で死ぬことはありませんが、メモリと CPU の点でより高価です。