Heim > Backend-Entwicklung > PHP-Tutorial > Wann werden die Magic-Methoden __get und __set von PHP tatsächlich aufgerufen?

Wann werden die Magic-Methoden __get und __set von PHP tatsächlich aufgerufen?

Mary-Kate Olsen
Freigeben: 2024-11-16 15:34:02
Original
259 Leute haben es durchsucht

When Do PHP's __get and __set Magic Methods Actually Get Called?

PHP __get und __set Magic-Methoden: Aufrufe und Einschränkungen verstehen

Die __get und __set Magic-Methoden in PHP sind für den Zugriff auf Objekteigenschaften konzipiert und Änderung, wenn die Eigenschaften nicht öffentlich zugänglich sind. Es kann jedoch zu Missverständnissen bezüglich ihres Verhaltens kommen.

Unzugängliche Eigenschaften

__get und __set werden aufgerufen, wenn auf die Eigenschaft oder Methode nicht zugegriffen werden kann. Im bereitgestellten Beispiel ist $bar eine öffentliche Eigenschaft, auf die standardmäßig zugegriffen werden kann. Daher werden die magischen Methoden nicht ausgelöst.

Getter- und Setter-Ersatz

Magische Methoden sind nicht dazu gedacht, Getter und Setter zu ersetzen. Sie bieten einen Fallback-Mechanismus für den Umgang mit unzugänglichen Eigenschaften. Sie dienen in erster Linie der Fehlerbehandlung und sollten nicht ausschließlich für den Zugriff auf und die Änderung von Eigenschaften verwendet werden.

Leistungsüberlegungen

Die Verwendung magischer Methoden kann im Vergleich zu langsameren Ausführungsgeschwindigkeiten führen bis hin zur Verwendung expliziter Getter, Setter oder des direkten Zugriffs auf Eigenschaften. Dies liegt daran, dass magische Methoden zusätzliche Methodenaufrufe und objektorientierte Selbstbeobachtung erfordern.

Beispielmodifikation

Um die ordnungsgemäße Verwendung magischer Methoden zu veranschaulichen, modifizieren wir das zu verwendende Beispiel eine private Eigenschaft:

class foo {

    private $bar;
    public function __get($name) {

        echo "Get:$name";
        return $this->$name;
    }

    public function __set($name, $value) {

        echo "Set:$name to $value";
        $this->$name = $value;
    }
}

$foo = new foo();
echo $foo->bar; // Invokes __get()
$foo->bar = 'test'; // Invokes __set()
echo "[$foo->bar]"; // Outputs [test]
Nach dem Login kopieren

In diesem Beispiel ist die Eigenschaft $bar jetzt privat, sodass standardmäßig kein Zugriff darauf möglich ist. Dadurch werden die Methoden __get und __set korrekt aufgerufen, wenn auf die Eigenschaft zugegriffen und diese geändert wird.

Das obige ist der detaillierte Inhalt vonWann werden die Magic-Methoden __get und __set von PHP tatsächlich aufgerufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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