Heim >Backend-Entwicklung >PHP-Tutorial >Warum werden meine magischen Methoden __get und __set nicht in PHP aufgerufen?

Warum werden meine magischen Methoden __get und __set nicht in PHP aufgerufen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-15 04:47:021033Durchsuche

Why aren't my __get and __set magic methods being invoked in PHP?

Getter und Setter überladen: Die magischen Methoden __get und __set verstehen

Die magischen Methoden __get und __set in PHP sollen eine Alternative dazu bieten traditionelle Getter und Setter. Durch Überschreiben dieser Methoden können Entwickler das Verhalten beim Zugriff und bei der Änderung von Eigenschaften anpassen. Wie im bereitgestellten Codebeispiel zu sehen ist, werden diese Methoden jedoch nicht wie erwartet aufgerufen.

Das Problem: Magische Methoden vs. öffentliche Eigenschaften

Wenn Eigenschaften deklariert werden Wenn sie öffentlich sind, gelten sie als zugänglich und PHP ruft die Methoden __get und __set nicht auf. In diesem speziellen Fall wird die $bar-Eigenschaft als öffentlich deklariert, wodurch die magischen Methoden überflüssig werden.

Eigenschaftsüberladung mit magischen Methoden

Wie im PHP-Handbuch erwähnt, __get wird zum Lesen von Daten aus unzugänglichen Eigenschaften verwendet, während __set zum Schreiben von Daten in unzugängliche Eigenschaften verwendet wird. Wenn die Eigenschaft $bar als privat oder geschützt definiert worden wäre, hätten die Methoden __get und __set eingegriffen.

Auswirkungen auf die Leistung

Es ist wichtig zu beachten, dass dies bei magischen Methoden der Fall ist deutlich langsamer als normale Getter, Setter und direkte Methodenaufrufe. Daher sollten sie mit Bedacht für bestimmte Anwendungsfälle eingesetzt werden, wie zum Beispiel die Fehlerbehandlung oder die Bereitstellung eines dynamischen Eigenschaftszugriffs.

Fazit

Die magischen Methoden __get und __set in PHP dienen dazu Sie dienen einem bestimmten Zweck und sollten nur bei Bedarf verwendet werden, wobei die damit verbundenen Leistungseinbußen zu berücksichtigen sind. In Fällen, in denen auf Eigenschaften zugegriffen werden kann, wie im bereitgestellten Beispiel, ist es effizienter, Standardtechniken für den Zugriff auf und die Änderung von Eigenschaften zu verwenden.

Das obige ist der detaillierte Inhalt vonWarum werden meine magischen Methoden __get und __set nicht in PHP aufgerufen?. 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