Heim  >  Artikel  >  Backend-Entwicklung  >  Beeinflusst die Zuweisung per Referenz die Objektänderung in PHP?

Beeinflusst die Zuweisung per Referenz die Objektänderung in PHP?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-22 07:22:02792Durchsuche

Does Assignment by Reference Affect Object Modification in PHP?

Bestimmen der Objektzuweisung in PHP

In der PHP-Programmierung können Objekte entweder durch Wert oder Referenz zugewiesen werden. Diese Unterscheidung wirkt sich darauf aus, wie sich an einem Objekt vorgenommene Änderungen in anderen Teilen des Codes widerspiegeln.

Betrachten wir den folgenden Code:

<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");
    }
}</code>

Es stellt sich die Frage: Wenn der „Bar::test( )“-Methode ausgeführt wird, wirkt sich die Änderung von „foo # 5“ im Array der „Foo“-Objekte auf das eigentliche „foo # 5“-Objekt selbst aus oder wird eine separate lokale Variable „testFoo“ erstellt?

Antwort:

Um die Antwort zu ermitteln, können wir den Code ausführen und die Ausgabe beobachten:

<code class="php">$b = new Bar;
echo $b->getFoo(5)->value;
$b->test();
echo $b->getFoo(5)->value;</code>

Die Ausgabe für den obigen Code wird voraussichtlich wie folgt lauten:

Foo #5
My value has now changed

Dies zeigt an, dass sich die am „testFoo“-Objekt vorgenommene Änderung auf das tatsächliche „foo #5“-Objekt im Array auswirkt. Dieses Verhalten wird auf das Konzept der „Zuweisung per Referenz“ in PHP 5 zurückgeführt, das standardmäßig für Objekte gilt.

Auswirkungen:

Zuweisung per Referenz stellt sicher, dass nachfolgende Änderungen an einem Objekt werden im gesamten Code widergespiegelt. Wenn Sie jedoch eine unabhängige Kopie eines Objekts erstellen möchten, können Sie das Schlüsselwort „clone“ verwenden, um eine wertbasierte Zuweisung durchzuführen.

Das obige ist der detaillierte Inhalt vonBeeinflusst die Zuweisung per Referenz die Objektänderung in PHP?. 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