/*
------------------------------------------- ----------------------------------
| この記事は Haohappy<
| = 章のクラスとオブジェクトのメモ
| = 不要なトラブルを避けるため、転載しないでください。批判や修正は大歓迎です。私たちはすべての PHP 愛好家とともに進歩していきたいと考えています。
= PHP5 Research Center: http://blog.csdn.net/haohappy2004
--------- ----- -------------------------------------- ----- ---------------
*/
セクション 5 -- クローン
PHP5 のオブジェクト モデルは、次のようにオブジェクトを呼び出します。ただし、オブジェクトのコピーを作成し、元のオブジェクトへの変更がコピーに影響しないようにしたい場合があります。この目的のために、PHP では __construct や __destruct と同様に、その前に __clone という特別なメソッドが定義されています。 2 つのアンダースコア。
デフォルトでは、__clone メソッドを使用すると、元のオブジェクトと同じプロパティとメソッドを持つオブジェクトが作成されます。クローン作成時にデフォルトのコンテンツを変更する必要があります。
clone メソッドにはパラメーターを含めることはできませんが、このポインターとそのポインター (コピーされるオブジェクトを指す) の両方が含まれているため、自分自身をクローンする場合は、次の点に注意する必要があります。オブジェクトには、そこからこれまでの情報が含まれています。 __clone を使用してコピーする場合、
以下は、シリアル序数を使用してオブジェクトを自動化する例です。 🎜 >
コードをコピー
コードは次のとおりです: class ObjectTracker //Object Tracker
{ > private static $nextSerial = 0; private $id;
function __construct($name) //コンストラクター関数
$this-> ; name = $name;
$this->id = self::$nextSerial;
__clone() //クローン
{ $this-> name = "$that のクローン->name";
$this->id = self::$nextSerial;
} }
function getId() //id 属性の値を取得
戻る($this->名前);
} }
}
$ot = new ObjectTracker("Zeev のオブジェクト")
$ot2 = $ot->__clone(); ;
//出力: 1 Zeev のオブジェクト
print($ot->getId() . " " . $ot->getName() . "<🎜"); >
/ /出力: Zeev のオブジェクトの 2 つのクローン
print($ot2->getId() . " " . $ot2->getName() . "
"); ?>