Im SVN Repository findet sich als (erste) Komponente “Lang” die ersten paar Ideen für die Umsetzung von Standardproblemen. Die Anlehung, speziell des Verzeichnisnamens, an die Java-Bibliothek sollte eher als lose Verbindung betrachtet werden. Im Gegensatz zu Java definieren die Bestandteile der Komponente nicht die Sprache selbst, wie es der Verzeichnisname vermuten lässt, sondern soll vorallen bestimmte Vorgehensweisen in Applikationen vereinheitlichen, um sie so verstärkt untereinander kompatibel zu machen.
Was heißt das jetzt? Eine Liste sollte immer eine Liste sein, egal welche Applikation sie erstellt und welche sie verwendet. In PHP selbst gibt es keine Vereinheitlichung, mal abgesehen von Arrays, die aber in vieler Hinsicht recht unzureichend sind. Zum Beispiel müsste man bei Verwendung jedes mal den Typ jedes Elementes prüfen, wenn man ein bestimmtes Objekt oder gerade kein Objekt erwartet. Sollte sich da mal ein Fehler untergeschlichen haben, kann das unschön werden.
Obwohl die Typschwäche von PHP meines Erachtens weiterhin als Vorteil betrachtet werden kann, kann sie einem im Kontext von OOP manchmal schon ziemlich nerven. Während einfache Objekte und Arrays noch als Type-Hints gefordert werden können und diese, wie ein kleines Experiment zeigte, nicht zwangsläufig stark ausbremsen müssen, ist es nicht möglich Inhalte von Arrays zu zu fordern.
Bei planaren Strukturen ist das noch ein überschaubares Problem, komplizierter wirds, wenn es komplizierter wird
Zum Beispiel gibt es bei Baumstrukturen, die gerne mal vorkommen, endgültig kein vorgegebenes Format. Es gibt höchstens einen Quasi-Standard mit den bekannten Methoden getParent() und Konsorten. Daraus verlassen kann man sich allerdings nicht.
Wie angedeutet: Das Problem ist nicht, dass es solche Strukturen generell in PHP nicht gibt oder geben kann, sondern dass es keine Zusicherung über das Interface gibt. Ständiges API-Studieren für wiederkehrende Probleme oder Konvertierungen von einer Liste zu einer andere Liste wirkt sehr nach Zeitverschwendung, die man sich sparen kann.
Soweit,
Müsli
Pingback: KingCrunch’s kleine Welt » Blog Archiv » Open PHP Library