Das Beispiel in diesem Artikel beschreibt die Verwendung des Klonens von PHP-Objekten. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
Flaches Klonen: Klonen Sie nur die Nicht-Objekt-Nicht-Ressourcen-Daten im Objekt, d. h. die Attribute im Objekt speichern den Objekttyp. dann erfolgt ein unvollständiges Klonen
<?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);
Die laufenden Ergebnisse sind wie folgt:
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
Tiefes Klonen: Alle Attribute eines Objekts Die Daten werden vollständig kopiert, Sie müssen die magische Methode __clone() verwenden und darin tiefes Klonen implementieren
<?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);
Die laufenden Ergebnisse sind wie folgt:
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
Ich hoffe, dieser Artikel wird für alle hilfreich sein, die sich mit PHP-Programmierung befassen.
Weitere Artikel zu Anwendungsbeispielen für das Klonen von PHP-Objekten finden Sie auf der chinesischen PHP-Website!