Verwenden PHP-Objekte Wert- oder Referenzzuweisungen?

Susan Sarandon
Freigeben: 2024-10-22 07:25:02
Original
827 Leute haben es durchsucht

Do PHP Objects Use Value or Reference Assignment?

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

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

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

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!

Quelle:php
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!