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

Wie kann ich in PHP echte Kopien von Objekten erstellen?

DDD
DDDOriginal
2024-11-28 09:40:11156Durchsuche

How Can I Create True Copies of Objects in PHP?

Kopieren von Objekten in PHP: Übergabe per Referenz und Verwendung von „Klonen“ verstehen

Trotz der Annahme, dass Objekte in PHP per Referenz übergeben werden, erstellen Zuweisungsoperatoren keine Kopien . Dieses Verhalten wird im folgenden Beispielcode demonstriert:

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;
print $c->b;

In diesem Fall geben beide Druckanweisungen „after“ aus, was darauf hinweist, dass das Objekt von der Funktion set_b() geändert wurde, obwohl es als übergeben wurde Argument.

Um eine Kopie eines Objekts in PHP zu erstellen, können Sie den in PHP 5 eingeführten Klonoperator verwenden:

$objectB = clone $objectA;

Diese Operation erstellt ein neues Objekt das ist unabhängig vom ursprünglichen Objekt. Alle an einem Objekt vorgenommenen Änderungen wirken sich nicht auf das andere aus.

Es ist wichtig zu beachten, dass in PHP nur Objekte als Referenz übergeben werden. Variablen anderer Typen, beispielsweise Arrays, Zeichenfolgen und Ganzzahlen, werden als Wert übergeben. Das bedeutet, dass durch die Zuweisung dieser Variablen zu anderen Variablen eine neue Instanz der Variablen erstellt wird und kein Verweis auf die ursprüngliche Variable.

Das obige ist der detaillierte Inhalt vonWie kann ich in PHP echte Kopien von Objekten erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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