Maison  >  Article  >  développement back-end  >  Exemple d'utilisation du clonage d'objet PHP

Exemple d'utilisation du clonage d'objet PHP

高洛峰
高洛峰original
2016-12-21 14:04:421177parcourir

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 &#39;<br>&#39;;
var_dump($obj_b);

Les résultats en cours sont les suivants :

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

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 &#39;<br>&#39;;
var_dump($obj_b);

Les résultats en cours sont les suivants :

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

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 !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn