ホームページ  >  記事  >  バックエンド開発  >  Clone_PHP チュートリアル

Clone_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-20 10:59:44829ブラウズ

PHP5 のオブジェクト モデルは参照によってオブジェクトを呼び出しますが、オブジェクトのコピーを作成し、元のオブジェクトへの変更がコピーに影響しないようにしたい場合があります。この目的のために、PHP は __clone Like という特別なメソッドを定義しています。 __construct と __destruct、前に 2 つのアンダースコアがあります。

デフォルトでは、__clone メソッドを使用すると、元のオブジェクトと同じプロパティとメソッドを持つオブジェクトが作成されます。クローン作成時にデフォルトのコンテンツを変更したい場合は、__clone で (プロパティまたはメソッド) をオーバーライドする必要があります。
clone メソッドはパラメータを取ることができませんが、このポインタとそのポインタ (コピーされるオブジェクトを指す) の両方が含まれています。自分自身を複製することを選択した場合は、そこからオブジェクトに含めたい情報をコピーするように注意する必要があります。これに __clone を使用してコピーすると、PHP は暗黙的なコピーを実行しません。
以下は、系列の序数を使用してオブジェクトを自動化する例を示しています:


クラス ObjectTracker file://Object Tracker
{
プライベート静的 $nextSerial = 0;
プライベート $id;
プライベート $name;

function __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://name 属性の値を取得します
{
return($this->name);
}
}

$ot = 新しい ObjectTracker("Zeev のオブジェクト");
$ot2 = $ot->__clone();

//出力: 1 Zeev のオブジェクト
print($ot->getId() . " " . $ot->getName() . "
");

//出力: Zeev のオブジェクトのクローン 2 つ
print($ot2->getId() . " " . $ot2->getName() . "
");
?>


http://www.bkjia.com/PHPjc/445561.html

tru​​ehttp://www.bkjia.com/PHPjc/445561.html技術記事 PHP5 のオブジェクト モデルは参照によってオブジェクトを呼び出しますが、場合によっては、オブジェクトのコピーを作成し、元のオブジェクトへの変更がコピーに影響しないようにしたい場合があります。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。