php clone メソッドは、PHP オブジェクトのクローン作成を指します。整数 $a を変数 $b に代入すると、$b は $a の「コピー」になりますが、この 2 つは関連しません。 b の値は $a に影響を与えず、$a の値の変更は $b に影響を与えません。
推奨: 「PHP ビデオ チュートリアル 」
PHP オブジェクトの複製: __clone() メソッド
オブジェクトのクローン作成: __clone() メソッド
整数 $a を変数 $b に代入すると、$b は $a の「コピー」になりますが、2 番目の 2 つは$b の値を変更しても $a には影響せず、$a の値を変更しても $b には影響しません。同じことが配列にも当てはまりますが、オブジェクトでは異なります。オブジェクト インスタンス $a が変数 $b に割り当てられるとき、$b は $a の「コピー」ではなく、$a への参照です。値の変更は、 $a に影響し、$a の値の変更は $b にも影響します。
例:
<?php class Cat{ public $name; function __construct($name){ echo 'Cat类启动'; $this->name = $name; } function __destruct(){ echo 'Cat类结束'; } } $a = new Cat("默默");//实例化类,调用无参数的构造方法 //$c被销毁时自动调用析构方法 $b=$a; echo "改变之前:<br>"; echo "a->name:".$a->name."<br>"; echo "b->name:".$b->name."<br>"; $a->name="琳琳"; echo "改变之后:<br>"; echo "a->name:".$a->name."<br>"; echo "b->name:".$b->name."<br>"; ?>
実行結果:
Cat クラスの変更が開始される前:
a->名前: モモ
b->名前: モモ
変更後:
a->名前: リンリン
b->name: Linlin
しかし、多くの場合、オブジェクトへの参照だけでなく、オブジェクトのコピーが必要になります。現時点では clone キーワードを使用できますが、「cloned」クラス属性に参照がある場合、その参照は保持されることに注意してください。つまり、コピー内の参照と元のクラス内の参照の両方が保持されます。同じメモリを指します。 .
例:
<?php class Cat{ public $name; function __construct($name){ echo 'Cat类启动'; $this->name = $name; } function __destruct(){ echo 'Cat类结束'; } } $a = new Cat("默默");//实例化类,调用无参数的构造方法 //$c被销毁时自动调用析构方法 $b=clone $a; echo "改变之前:<br>"; echo "a->name:".$a->name."<br>"; echo "b->name:".$b->name."<br>"; $a->name="琳琳"; echo "改变之后:<br>"; echo "a->name:".$a->name."<br>"; echo "b->name:".$b->name."<br>"; ?>
実行結果:
Cat クラスは前に変更を開始します:
a->name:黙って
b->名前: モモ
変更後:
a->名前: リンリン
b->名前: モモ
Cat クラスの終了 Cat クラスの終了
このクラスの属性 $name には参照が与えられているため、clone キーワードを使用してコピーすると、「コピー」内の名前と $name 「元の」では同じ変数を指します
以上がphpのクローン方法とは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。