リファレンス
http://php.net/manual/ja/language.references.php
PHPにおいて、リファレンス(参照)とは「同じ変数の内容を異なった名前であつかう事ができる」機能です。
マニュアルには「PHP の参照は一種のエイリアスで、ふたつの異なる変数に同じ値を書き込めるもの」とも記載されています( https://www.php.net/manual/ja/language.oop5.references.php )。
通常のプログラムであれば「異なる名前の変数は、異なる内容(実体)を持っている」のですが、リファレンスを使うと「名前は異なる変数だが、実際には同一の内容を見ている」といった事(が可能)になります。
オブジェクトと参照
https://www.php.net/manual/ja/language.oop5.references.php
PHP では、オブジェクト変数の値にオブジェクト自身は含まれません。 含まれるのはオブジェクトの ID のみで、 これを用いて実際のオブジェクトにアクセスできるようになっています。
そのため、オブジェクト(インスタンス)を =
で代入したり関数(やメソッド)の引数で渡すと、参照渡しと同じような状態になります。
オブジェクトのクローン作成
https://www.php.net/manual/ja/language.oop5.cloning.php
オブジェクト(インスタンス)のコピー(同じ値を持つ、異なる実体の作成)をしたい時は、 clone
キーワードを使います。
22章 オブジェクトのクローン作成( https://www.phpexam.jp/archives/3626 )を参照してください。
このコラムに関連するコードはこちらになります
https://github.com/php-engineer-examination/php8_column_expert/blob/main/src/029.php