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);