8

PHP で深いオブジェクトのコピー/クローンを実行するための最も受け入れられている方法は何ですか?

いくつかの問題があると思われるシリアライズを使用した例をいくつか見つけました。

4

1 に答える 1

7

クラスに完全にアクセスできる場合は__clone()、それらすべてに実装してからcloneキーワードを使用できます。それ以外の場合、cloneキーワードは最上位のオブジェクトの浅いコピーを作成するだけで、このオブジェクト内の潜在的な参照は元のターゲットを指し続けます。この__clone()メソッドを使用すると、より多くの制御が可能になりますが、循環参照を明示的に処理しないと、循環参照で無限ループが発生する可能性があります。

シリアライゼーション手法は一般的に機能し、循環参照で死ぬことはありませんが、メモリと CPU の点でより高価です。

于 2012-07-14T21:09:40.780 に答える