PHP5では、オブジェクトのクローン作成時に自動的に呼び出される特別なメソッド名「__clone()」メソッドを定義しています。元のオブジェクトと同じ属性とメソッドを持つオブジェクト。クローン作成後に元のオブジェクトの内容を変更したい場合は、__clone() メソッドで元の属性とメソッドを書き換える必要があります。パラメーターはありません。$this と $that という 2 つのポインターが自動的に含まれます。$this はコピーを指し、$that はオリジナルを指します。 コードは次のとおりです:
クラス人 {
// 人物のメンバー属性は以下の通りです
var $name // 人の名前
;var $sex // 人の性別
var $age // その人の年齢
;// 属性名 $name、性別 $sex、年齢 $age に値を割り当てるコンストラクター パラメーターを定義します
// function __construct($name="", $sex="",$age="")
function __construct($name, $sex, $age) {
$this->name = $name;
$this->sex = $sex;
$this->age = $age;
}
// この人の話し方で、自分の属性を伝える
関数say() {
「私の名前は: " . $this->name . " 性別: " . $this
->年齢「
」「;
」}
// オブジェクトの複製時に自動的に呼び出されるメソッド。複製後に元のオブジェクトの内容を変更したい場合は、__clone()で元の属性とメソッドを書き換える必要があります。
関数__clone() {
// $this はコピー p2 を指し、$that は元の p1 を指すため、このメソッドではコピーの属性が変更されます。
$this->name = "私はコピーされた Zhang San$that->name";
// $this->age = 30;
}
}
$p1 = 新しい人 ("张三", "男", 20);
$p2 = クローン $p1;
$p1->say ();
$p2->say ();
?>
この PHP プログラムが正常に実行された後の結果は次のとおりです:
コードは次のとおりです:
私の名前:Zhang San 性別:男性 私の年齢:20歳
私の名前は: Zhang San のコピーです 性別: 男性 私の年齢: 20
http://www.bkjia.com/PHPjc/991644.html