Erstellen einer Objektkopie in PHP
PHP-Objekte werden von Natur aus als Referenz übergeben, sodass bei der Zuweisung von Objekten lediglich eine weitere Referenz auf das Original zugewiesen wird Objekt. Um dieses Problem zu lösen und unabhängige Objektkopien zu erstellen, stellt PHP den Klonoperator bereit.
Grund für die Übergabe als Referenz
In PHP sind Objekte effektiv Verweise auf Speicherbereiche enthält die Daten des Objekts. Durch die Referenzübergabe wird sichergestellt, dass alle am Objekt innerhalb der Funktion vorgenommenen Änderungen im Originalobjekt widergespiegelt werden, wodurch die ursprüngliche Absicht der objektorientierten Programmierung erhalten bleibt.
Operator für das Klonen von Objekten
Der Klonoperator ist speziell für die Erstellung einer Kopie eines Objekts konzipiert. Durch die Verwendung von $clonedObject = clone $originalObject wird ein neues Objekt mit identischen Eigenschaften und Werten wie das Originalobjekt erstellt. Das geklonte Objekt ist eine völlig unabhängige Einheit und alle an einem der Objekte vorgenommenen Änderungen wirken sich nicht auf das andere aus.
Beispielverwendung
Betrachten Sie das folgende Beispiel:
class A { public $b; } function set_b($obj) { $obj->b = "after"; } $a = new A(); $a->b = "before"; $c = $a; // Assignment creates another reference to $a set_b($a); print $a->b; // Outputs "after" print $c->b; // Also outputs "after"
In diesem Beispiel wird durch die Zuweisung von $a zu $c ein Verweis auf dasselbe Objekt erstellt. Wenn set_b($a) aufgerufen wird, werden die Änderungen am Originalobjekt vorgenommen und wirken sich sowohl auf $a als auch auf $c aus.
Um das gewünschte Ergebnis zu erzielen, kann clone wie folgt verwendet werden:
$a = new A(); $a->b = "before"; $c = clone $a; // Creates an independent copy of $a set_b($a); print $a->b; // Outputs "after" print $c->b; // Outputs "before" (not affected by changes to $a)
In diesem Fall ist $c ein separates Objekt, das von Änderungen an $a nicht betroffen ist.
Das obige ist der detaillierte Inhalt vonWie erstelle ich unabhängige Objektkopien in PHP mit dem Clone-Operator?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!