Erstellen von Objektkopien in PHP
PHP behandelt Objektreferenzen auf einzigartige Weise. Entgegen der landläufigen Meinung werden Objekte als Referenz übergeben, was bedeutet, dass durch die Zuweisung eines Objekts zu einer anderen Variablen keine Kopie erstellt wird. Dieses Verhalten wird deutlich, wenn das ursprüngliche Objekt nach der Zuweisung geändert wird.
Beispiel:
Bedenken Sie das folgende PHP-Snippet:
class A { public $b; } function set_b($obj) { $obj->b = "after"; } $a = new A(); $a->b = "before"; $c = $a; // This line creates a reference to $a, not a copy set_b($a); print $a->b; // Output: 'after' print $c->b; // Output: 'after'
In diesem Wenn Sie beispielsweise $a zu $c zuweisen, wird statt einer Kopie ein Verweis auf $a erstellt. Wenn die Funktion set_b() das Objekt $a ändert, werden die Änderungen sowohl in $a als auch in $c widergespiegelt.
Lösung: Verwenden von Clone
PHP 5 und höher Stellen Sie den Klonoperator bereit, um echte Kopien von Objekten zu erstellen. Durch die Verwendung von Klonen können Sie ein Objekt als Wert übergeben und sicherstellen, dass Änderungen am Originalobjekt keine Auswirkungen auf die Kopie haben.
$objectB = clone $objectA; // Creates a copy of $objectA
Wichtiger Hinweis:
Das ist es Erwähnenswert ist, dass in PHP nur Objekte per Referenz übergeben werden. Primitive Datentypen (wie Ganzzahlen, Zeichenfolgen und boolesche Werte) werden immer als Wert übergeben.
Das obige ist der detaillierte Inhalt vonWie erstelle ich echte Kopien von Objekten in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!