PHP5 のオブジェクト モデルは参照によってオブジェクトを呼び出しますが、オブジェクトのコピーを作成し、元のオブジェクトへの変更がコピーに影響しないようにしたい場合があります。そのために、PHP は _ _clone と呼ばれる特別なメソッドを定義します。 __construct と __destruct、先頭に 2 つのアンダースコアが付きます。
デフォルトでは、__clone メソッドを使用すると、元のオブジェクトと同じプロパティとメソッドを持つオブジェクトが作成されます。デフォルトの内容を変更する場合は、 __clone で (プロパティまたはメソッド) をオーバーライドする必要があります。
clone メソッドにはパラメーターを含めることはできませんが、自分自身のクローンを作成することを選択した場合は、このポインターとそのポインターの両方が含まれます。オブジェクトに含めたい情報を、そこからこれにコピーする場合、PHP は暗黙的なコピーを実行しません。以下に示すシリアル序数の使用例です。オブジェクトを自動化するための数値:
class ObjectTracker
{
private static $nextSerial = 0;
private $name; __construct($name) file://constructor
{
$this->name = $name;
$this->id = self::$nextSerial;
function __clone() file://clone
{
$this->name = "$that->name のクローン";
$this->id = self :: $nextSerial;
}
function getId() file://id 属性の値を取得します
{
return($this->id); 🎜>
function getName() file://名前属性の値を取得します
{
return($this->name)
}
}
$ ot = new ObjectTracker("Zeev のオブジェクト");
$ot2 = $ot->__clone();
//出力: 1 Zeev のオブジェクト
print($ot-> ;getId () . " " . $ot->getName() . "
");
// 出力: Zeev のオブジェクトの 2 つのクローン
print($ot2->) getId( ) . $ot2->getName() .
?>