Mann, mann, da hab ich ja was losgetreten.
Um ein paar Sachen klar zu stellen:
1. Mir ist klar, daß das zuerst beschriebene Beispiel nicht der ideale Weg ist, eine Baumstruktur darzustellen. Dafür eignen sich Objekte deutlich besser. Abgesehen davon, daß bis PHP4 die Entscheidung für Objekte auch immer einen großen Performance-Verlust mit sich bringt, ging es aber hier nicht um die Praxisanwendung. Ich wollte einfach wissen, ob jemand eine bessere Methode hat, einen dynamischen Zugriff auf ein multidimensionales Array zu realisieren, da sich Array-Bezeichnungen nicht variabel bilden lassen.
2. Keines der hier gezeigten Beispiele ist wirklich rekursiv, stimmt, sie sind alle iterativ. Die Umsetzung wäre aber nun kein Problem und ändert am Prinzip meines Beispiels nicht viel.
@Waq, deinem Link bin ich gefolgt und habe den Artikel mit Interesse gelesen, auch wenn ich dem Autor nicht in allem zustimmen kann.
Natürlich werden Accessors zu häufig und oft ohne Sinn eingesetzt. Außerdem bin ich ebenfalls der Meinung, daß der Datenbestand einer Klasse grundsätzlich nicht public zu sein hat, ob über direkten Zugriff oder Accessors ist eigentlich egal. Dafür soll ein Objekt schliesslich ein UI zur Verfügung stellen. Es gibt allerdings Fälle in denen Objekte als Daten-Container fungieren. Nehmen wir mal als Beispiel ein Konfigurations-Objekt, dass eine Konfigurationsdatei parst und den Inhalt der gesamten Applikation (z.B. über Singleton) zur Verfügung stellt. In dem Fall kann man natürlich jede angeforderte Konfigurationsanweisung als Objekt zurück geben, dass die entsprechenden Daten enthält. Gerade in PHP4 halte ich das aber für Overkill.
OOP ist meiner Meinung nach im Praxiseinsatz kein starres Konzept, sondern ein Design-Prinzip, mit dem sich viel Arbeit sparen und sauberer entwickeln läßt. Wenn eine Ausnahme im üblichen OOP-Prinzip viel Arbeit sparen kann, fühle ich mich nicht, als hätte ich heilige Regeln übertreten.
P.S.: Ich habe hier niemanden rufen hören: 'Guck mal, tolles OOP'. Ich denke den Tonfalls können wir uns sparen, oder?
Nachtrag: Habe natürlich ein paar Beiträge vorher zu schreiben angefangen. Man sollte nicht zu viel gleichzeitig machen.
