古庄親方の上級試験コラム#022 言語リファレンス オブジェクトのクローン作成

https://www.php.net/manual/ja/language.oop5.cloning.php

目次

clone キーワード

インスタンス(オブジェクト)を、単純に代入式(=)で代入すると、同じインスタンスへのアクセスになります。
インスタンスのコピーを作成したい場合、clone キーワードを使う必要があります。

シャローコピー(浅いコピー)

インスタンスは、clone キーワードを使うことでコピーを作成する事ができます。
しかし、インスタンス(A)の中に別のインスタンス(B)がある場合、インスタンスBは「代入式(=)での代入」となります。これはシャローコピー(浅いコピー)と呼ばれ、PHP以外でも多くの言語で発生します。

「ディープコピー(深いコピー)」 と __clone() マジックメソッド

「インスタンス(A)の中にある、別のインスタンス(B)」もcopyされるよう挙動を、ディープコピー(深いコピー)と言います。
PHPでディープコピーを実装する場合、__clone() マジックメソッドを使用します。

このコラムに関連するコードはこちらになります
https://github.com/php-engineer-examination/php8_column_expert/blob/main/src/022.php

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次