ホームページ  >  記事  >  バックエンド開発  >  PHPオブジェクトクローン作成クローンの使用例

PHPオブジェクトクローン作成クローンの使用例

高洛峰
高洛峰オリジナル
2016-12-21 14:04:421133ブラウズ

この記事の例では、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 &#39;<br>&#39;;
var_dump($obj_b);

実行 結果は次のとおりです:

object(A)[1]
 public &#39;val&#39; => int 30
 public &#39;b&#39; =>
 object(B)[2]
  public &#39;val&#39; => int 40
 
object(A)[3]
 public &#39;val&#39; => int 20
 public &#39;b&#39; =>
 object(B)[2]
  public &#39;val&#39; => 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 &#39;<br>&#39;;
var_dump($obj_b);

実行結果は次のとおりです:

object(A)[1]
 public &#39;val&#39; => int 30
 public &#39;b&#39; =>
 object(B)[2]
  public &#39;val&#39; => int 40
 
object(A)[3]
 public &#39;val&#39; => int 20
 public &#39;b&#39; =>
 object(B)[4]
  public &#39;val&#39; => int 10

この記事が PHP プログラミングのすべての人に役立つことを願っています。

PHP オブジェクト クローン クローンの使用例に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。