Heim > Artikel > Backend-Entwicklung > Warum werden meine magischen Methoden __get und __set nicht in PHP aufgerufen?
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 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!