「6.3プロパティおよびメソッドへのアクセス」からのメモ。
PHPでのオブジェクトの代入は参照渡しになります。参照ではなくコピーしたい場合はclone構文を使います。
<?php class Person { public $age; function __clone() { echo "start clone...\n"; } } $hoge = new Person; $hoge->age = 10; $foo = clone $hoge; $foo->age = 20; echo "\$hoge->age = {$hoge->age}\n"; echo "\$foo->age = {$foo->age}\n"; ?>
start clone... $hoge->age = 10 $foo->age = 20
__clone()メソッドを定義しておくと、クローンされるまえにその関数が呼び出されます。