Heim > Backend-Entwicklung > PHP-Tutorial > Wie erstelle ich echte Kopien von Objekten in PHP?

Wie erstelle ich echte Kopien von Objekten in PHP?

DDD
Freigeben: 2024-12-03 08:28:10
Original
658 Leute haben es durchsucht

How Do I Create True Copies of Objects in PHP?

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'
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage