L'exemple de cet article décrit l'utilisation du clonage d'objet PHP. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :
Clonage superficiel : clonez uniquement les données non-objets et non-ressources dans l'objet, c'est-à-dire que les attributs de l'objet stockent le type d'objet, alors un clonage incomplet se produira
<?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);
Les résultats en cours sont les suivants :
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
Clonage profond : tous les attributs d'un objet Les données sont entièrement copiées, vous devez utiliser la méthode magique __clone() et y implémenter le clonage profond
<?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);
Les résultats en cours sont les suivants :
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
J'espère que cet article sera utile à tout le monde dans la programmation PHP.
Pour plus d'articles liés aux exemples d'utilisation du clonage d'objets PHP, veuillez faire attention au site Web PHP chinois !