PHPでのオブジェクト参照と複製について調べたので記録します。PHPのバージョンは5.2.17で確認しました。
オブジェクトを変数に代入するとオブジェクトへの参照が代入される
以下のコードは11行目で変数「b」にオブジェクトを代入しています。15行目で$aのプロパティ「hoge」に文字列を上書きしていますが、$bのプロパティ「hoge」も影響を受けているのが分かります。
[php]
hoge = ‘Bye’;
print $b->hoge; // Byeと表示されます。
?>
[/php]
オブジェクトを複製する場合はcloneキーワードを使用する
参照でなく複製を作成する場合は11行目の代入時にcloneキーワードを記述することで、$bにオブジェクトの複製を代入することができます。
[php]
hoge = ‘Bye’;
print $b->hoge; // Helloと表示されます。
?>
[/php]