Moin!
In PHP hingegen sind viele Funktionsaufrufe, mitunter ein Performanceproblem, was man vermeiden kann, wenn es sich sowieso nur um 1:1-Durchreichungen an die internen Variablen handelt und keinerlei Zugrifflogik dabei irgendwas regelt. Zur Not kann man mit den Magic-Methoden __get/__set immer noch Getter/Setter gezielt für die das benötigenden Werte implementieren, ohne dass sich die API ändert.
Die Sätze enthalten Dinge, die ich als falsch betrachte und deshalb kommentieren muß:
Erstens: Es ist egal, wie man es implementiert, dass es Getter und Setter gibt - WENN man sie nachträglich hinzufügt, ändert sich die API, und wenn man irgendeine Typprüfung in die Magic-Methoden einfügt, ändert sich die API auch.
Und zweitens sind die Aufrufe über die Magic-Methoden deutlich unperformanter, als wenn man konkrete Funktionen bzw. Eigenschaften implementiert hat. Du vergleichst beides zwar nicht, aber dein Eingehen auf Performance zu Beginn und die Verbindung "zur Not kann man Magic-Methoden" implizieren mit diesem Vorgehen keine Performance-Einbußen.
Kollektionen (als ein zweites Beispiel) bildet man ebenfalls nicht unbedingt in PHP nach, wenn man einfach die Universalstruktur PHP-Array verwenden kann.
Es gibt allerdings einige PHP-Datenstrukturobjekte, die manche Aufgabe besser lösen, als das klassische Array. Siehe SPL Datastructures
- Sven Rautenberg