PHP オブジェクト クローンの使用
1. ?
? PHP5 は、元のオブジェクトと同じプロパティとメソッドを持つオブジェクトを作成する __clone() を定義します。クローン作成後に元のオブジェクトの内容を変更したい場合は、__clone() で元のプロパティとメソッドを書き直す必要があります。
?
????? __clone() にはパラメーターを含めることはできませんが、$this と $that という 2 つのポインターが自動的に含まれます。
$this はレプリカを指します
$ はオリジナルを指します
?
2.
クラス内で新しいクラスが宣言された場合
class ConcretePrototype{ // これがなければ、$obj は参照になります。実際に試してみてください。 ???
?? ?public function __construct() {
?? ?$this->id = 1;
?? ??$this->obj = new StdClass();
?? ?$this->obj->name = 'dashu';? ?}
?? ?
?? ?パブリック関数 myclone() {
?? ?クローン $this;
?? ?}
???
?private function __clone( ) {
?? ?$this->obj = クローン $this->??}
}$p = new ConcretePrototype();
$q = $p->myclone();
var_dump($p, $q);
$q -> ;id = 2;
//$q の obj の属性を変更します。$p の対応する属性は変更されません
$q->gt;obj->name = ' xiayi' ;var_dump($p, $q);