デフォルトでは、__clone メソッドを使用すると、元のオブジェクトと同じプロパティとメソッドを持つオブジェクトが作成されます。クローン作成時にデフォルトの内容を変更したい場合は、__clone で (プロパティまたはメソッド) をオーバーライドする必要があります。
clone メソッドにはパラメーターを含めることはできませんが、このポインターとあのポインター (コピーされたオブジェクトを指す) の両方が含まれます。自分自身のクローンを作成する場合は、オブジェクトに含める情報を慎重にコピーする必要があります。__clone を使用してコピーする場合、PHP は暗黙的なコピーを実行しません。以下に、シリーズを使用した例を示します。オブジェクトの自動化の例:
コードをコピー コードは次のとおりです:
class ObjectTracker //Object Tracker
{
private static $nextSerial = 0;
private $id;
function __construct($name) // コンストラクター関数
{
$ this-> ;name = $name;
$this->id = self::$nextSerial;
function __clone() // クローン
{
$ this-> ;name = "$this->name のクローン";
$this->id = self::$nextSerial;
function getId() //取得id 属性 Value
{
return($this->id)
}
function getName() // name 属性の値を取得
{
return($this ->name);
}
}
$ot = new ObjectTracker("Zeev's Object");
$ot2 = clone$ot;
// 出力: 1 Zeev のオブジェクト
print($ot->getId() . " " . $ot->getName() . "");
// 出力: 2 Zeev のオブジェクトのクローン
print($ot2->getId() . " " . $ot2->getName() . "");