Heim > Backend-Entwicklung > PHP-Tutorial > Warum werden die magischen Methoden __get und __set von PHP beim Zugriff auf eine öffentliche Eigenschaft nicht aufgerufen?

Warum werden die magischen Methoden __get und __set von PHP beim Zugriff auf eine öffentliche Eigenschaft nicht aufgerufen?

Barbara Streisand
Freigeben: 2024-11-25 19:59:15
Original
879 Leute haben es durchsucht

Why are PHP's __get and __set magic methods not invoked when accessing a public property?

Magische Methoden __get und __set in PHP

PHP bietet magische Methoden, die es Entwicklern ermöglichen, bestimmte Vorgänge wie Eigenschaftszugriff und Methodenaufrufe zu überlasten. Zu diesen Methoden gehören __get und __set, die das Standardverhalten des Eigenschaftszugriffs überschreiben sollen.

Der bereitgestellte Code definiert eine Klasse foo mit öffentlichen Eigenschaften und den magischen Methoden __get und __set. Wenn Sie jedoch versuchen, mit diesen Methoden auf $foo->bar zuzugreifen, wird nur auf die öffentliche Eigenschaft zugegriffen.

Das liegt daran, dass __get und __set nur aufgerufen werden, wenn auf die Eigenschaft oder Methode nicht zugegriffen werden kann. Da $foo->bar eine öffentliche Eigenschaft ist, werden die magischen Methoden nicht ausgelöst.

Gemäß dem PHP-Handbuch wird __get ausgeführt, wenn Daten aus unzugänglichen Eigenschaften gelesen werden, und __set wird verwendet, wenn Daten in unzugängliche Eigenschaften geschrieben werden Eigenschaften. In diesem Fall sind die Klassenmitglieder öffentlich und daher zugänglich, sodass die magischen Methoden irrelevant sind.

Anstatt magische Methoden zu verwenden, sollten Sie erwägen, geeignete Getter und Setter zu implementieren oder direkt auf die Eigenschaften zuzugreifen, um ein effizienteres und vorhersehbareres Verhalten zu erzielen. Magische Methoden sollten Ausnahmefällen vorbehalten bleiben, in denen Eigenschaften oder Methoden mit normalen Mitteln nicht zugänglich sind.

Das obige ist der detaillierte Inhalt vonWarum werden die magischen Methoden __get und __set von PHP beim Zugriff auf eine öffentliche Eigenschaft nicht 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