この記事の例では、PHP オブジェクトのクローン作成 clone の使用方法について説明します。参考までに皆さんと共有してください。詳細は次のとおりです:
浅いクローン作成: オブジェクト内の非オブジェクト、非リソース データ、つまりオブジェクト内の属性にオブジェクト タイプを格納するだけでクローンを作成します。不完全なクローン作成
<?php class B{ public $val = 10; } class A{ public $val = 20; public $b; public function __construct(){ $this->b = new B(); } } $obj_a = new A(); $obj_b = clone $obj_a; $obj_a->val = 30; $obj_a->b->val = 40; var_dump($obj_a); echo '<br>'; var_dump($obj_b);
実行 結果は次のとおりです:
object(A)[1] public 'val' => int 30 public 'b' => object(B)[2] public 'val' => int 40 object(A)[3] public 'val' => int 20 public 'b' => object(B)[2] public 'val' => int 40
ディープクローン作成: オブジェクトのすべての属性データが完全にコピーされます。マジックメソッド __clone() を使用し、ディープクローンを実装する必要があります。クローン作成
<?php class B{ public $val = 10; } class A{ public $val = 20; public $b; public function __construct(){ $this->b = new B(); } public function __clone(){ $this->b = clone $this->b; } } $obj_a = new A(); $obj_b = clone $obj_a; $obj_a->val = 30; $obj_a->b->val = 40; var_dump($obj_a); echo '<br>'; var_dump($obj_b);
実行結果は次のとおりです:
object(A)[1] public 'val' => int 30 public 'b' => object(B)[2] public 'val' => int 40 object(A)[3] public 'val' => int 20 public 'b' => object(B)[4] public 'val' => int 10
この記事が PHP プログラミングのすべての人に役立つことを願っています。
PHP オブジェクト クローン クローンの使用例に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。