In PHP können Objektverarbeitungsmechanismen rätselhaft erscheinen, insbesondere wenn es um das Kopieren von Objekten geht. Lassen Sie uns einem häufigen Missverständnis auf den Grund gehen, um die Wahrheit aufzudecken.
In PHP 5 und höher werden Objekte von Natur aus per Referenz übergeben. Dies bedeutet, dass alle Änderungen, die an einem Objekt innerhalb einer Funktion vorgenommen werden, Auswirkungen auf das ursprüngliche Objekt außerhalb der Funktion haben. Dies ist anders als bei der Wertübergabe, bei der eine Kopie des Objekts erstellt wird.
Der bloße Vorgang der Zuweisung eines Objekts zu einer anderen Variablen, Wie durch $c = $a veranschaulicht, wird keine neue Kopie des Objekts erstellt. Beide Variablen, $a und $c, verweisen auf dasselbe zugrunde liegende Objekt.
Der bereitgestellte Codeausschnitt zeigt die Auswirkungen der Übergabe von an Objekt durch Referenz:
<?php class A { public $b; } function set_b($obj) { $obj->b = "after"; } $a = new A(); $a->b = "before"; $c = $a; set_b($a); print $a->b; // Output: 'after' print $c->b; // Output: 'after' ?>
Wie erwartet geben sowohl $a als auch $c „danach“ aus, was zeigt, dass die Änderungen vorgenommen wurden innerhalb von set_b() werden in beiden Variablen widergespiegelt.
Um eine echte Kopie eines Objekts zu erstellen, bietet PHP der „Klon“-Operator. Durch die Verwendung dieses Operators können Sie ein neues Objekt erstellen, das vom ursprünglichen Objekt unabhängig ist:
$objectB = clone $objectA;
In diesem Beispiel wird $objectB zu einer separaten Instanz derselben Klasse wie $objectA, jedoch mit einer eigenen unabhängiger Zustand.
In PHP werden Objekte bis auf alles als Referenz übergeben anders. Der „Klon“-Operator bietet eine Möglichkeit, bei Bedarf echte Kopien von Objekten zu erstellen. Das Verständnis dieser Konzepte ist entscheidend, um unerwartetes Objektverhalten zu vermeiden und einen klaren und wartbaren Code sicherzustellen.
Das obige ist der detaillierte Inhalt vonWie geht PHP mit der Übergabe und dem Kopieren von Objekten um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!