clone
さすが俺、全然理解してないまま使ってた
http://php.net/manual/ja/language.oop5.cloning.php
オブジェクトのクローンが作成される際、PHP 5 は、そのオブジェクトのプロパティを 全てシャローコピーします。他の変数へのリファレンスを保持する全てのプロパティは、 リファレンスのままとなります。
クローンの作成が完了すると、 __clone() メソッドが定義された場合、新規の作成されたオブジェクトの __clone() メソッドがコールされるため、この中で、プロパティに 必要な変更を行うことができます。
こういうこと?
<?php class Human { public $name; public $gender; function __construct($name = '', $gender = 'female') { $this->name = $name; $this->gender = $gender; } function __clone() { $this->name = $this->name . 'のクローン'; } } $alocer = new Human('アロセール'); $alocer_clone = clone $alocer; $alocer_clone_clone = clone $alocer_clone; print_r($alocer); print_r($alocer_clone); print_r($alocer_clone_clone);