Hallo Camping_RIDER,
P.P.S.: In PHP musst du dir deine getter und setter ja nichtmal selber schreiben. __get und __set sind wirklich tolle Sachen!
Whoa - bis dahin konnte ich alles unterschreiben - aber __get und __set sind magic methods, die nicht an spezielle Properties gebunden sind. Statt dessen muss man darin eine Weiche vorsehen, um für jedes Property das jeweils richtige zu tun.
Solange es nur eine generische Aktion ist, also das Lesen oder Schreiben loggen oder zu notieren, dass die Eigenschaft foo auf den Wert "bar" gesetzt wurde, geht das. Aber spezifische Plausibilitätsprüfungen oder Fachlichkeiten sind auf diese Weise nicht gut platziert.
Man kann einen "Router" schreiben, der in __get und __set untergebracht ist und beim Auslesen von $obj->foo automatisch prüft, ob eine Methode get_foo existiert und diese dann aufruft.
Aber will man das? Der Overengineer ist begeistert von der Magie dieser Methoden und merkt auf seinem Entwicklungsrechner nichts davon. Aber ein solcher Router muss in jedes Lesen und Schreiben einer Objekteigenschaft hineingrätschen, und das kostet Zeit. Irgendwer meinte mal zu mir: Mit dem richtigen Einsatz von OOP macht man das schnellste System langsam. Man muss es natürlich im konkreten Fall anschauen. Aber ein Server, der ohnehin schon auf 99% läuft, kann durch solche Methoden auf 120% kommen - und ein Brüderchen verlangen, damit die Seite bedienbar bleibt. Das schlimmste, was einer ad hoc gebauten Webseite passieren kann, ist Erfolg. Und je mehr solcher abstrakten Konstrukte drin sind, desto eher kann der Erfolg wehtun. Magic Methods sind ein gravierender Klotz am Bein, ein JIT Compiler kann hier nichts optimieren und deshalb müssen sie vorsichtig verwendet werden.
Rolf
sumpsi - posui - obstruxi