Heim >Backend-Entwicklung >PHP-Tutorial >Verwenden PHP-Objekte Wert- oder Referenzzuweisungen?
Werden Objekte in PHP per Wert oder Referenz zugewiesen?
In PHP werden Objekte standardmäßig per Referenz zugewiesen. Das heißt, wenn einer Variablen eine Objektreferenz zugewiesen wird, zeigt sie direkt auf das Objekt im Speicher. Alle über die Variable am Objekt vorgenommenen Änderungen werden im Originalobjekt widergespiegelt.
Betrachten Sie das folgende Beispiel:
<code class="php">class Foo { var $value; function foo($value) { $this->setValue($value); } function setValue($value) { $this->value = $value; } } class Bar { var $foos = array(); function Bar() { for ($x = 1; $x <= 10; $x++) { $this->foos[$x] = new Foo("Foo # $x"); } } function getFoo($index) { return $this->foos[$index]; } function test() { $testFoo = $this->getFoo(5); $testFoo->setValue("My value has now changed"); } } $b = new Bar; echo $b->getFoo(5)->value; $b->test(); echo $b->getFoo(5)->value;</code>
Wenn die Methode Bar::test() ausgeführt wird, wird sie angezeigt Ändert den Wert des fünften Objekts im Array der Foo-Objekte. Diese Änderung spiegelt sich im ursprünglichen Objekt wider, wie in der Ausgabe zu sehen ist:
Foo #5 My value has now changed
Dieses Verhalten ist auf die Zuweisung der Objektreferenz zur Variablen $testFoo zurückzuführen. Die Variable zeigt direkt auf das Objekt, sodass alle über die Variable vorgenommenen Änderungen im Originalobjekt widergespiegelt werden.
Um ein Objekt nach Wert statt nach Referenz zuzuweisen, können Sie das Schlüsselwort clone verwenden:
<code class="php">$testFoo = clone $this->getFoo(5);</code>
Das obige ist der detaillierte Inhalt vonVerwenden PHP-Objekte Wert- oder Referenzzuweisungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!