Moin.
Ich musste mich jetzt wie in jeder Woche Uni-bedingt wieder mit Java auseinander setzen. Von der Typ-Sicherheit kann man halten, was man will. Ich finde sie zweckmässig, aber nichts für PHP. Was mir aber an Java durchaus gefällt ist die vorgefertigte durchaus riesige Bibltiothek an Standard-Klassen und -Interfaces, die besser Projekt-übergreifende Verwendung von Komponenten erlaubt. Zwar gibt es sowas für PHP in Form der Standard PHP Library auch, die scheint aber mehr rudimentär und nebenbei beziehen sich (fast?) alle Komponenten auf überladene Funktionalitäten von PHP selbst, wie zum Beispiel foreach-Schleifen. Einzig SPLSubject und SPLObserver fielen mir bisher auf einfach Pattern bereit zu stellen.
Das finde ich etwas schade, weil eine übergeordnete Struktur von Interfaces würde helfen einige Bibltiotheken untereinander zu standardisieren. Ob das gut ist, sei mal dahin gestellt, zumindest würde es das Leben sehr vereinfachen, wenn man von Bibliothek A zu Bibliothek B und beide gleiche oder zumindest ähnliche Funktionsweisen bieten. Man müsste nicht mehr ständig die API-Dokumentationen wälzen, nur um herauszufinden, wie die gleiche Funktionalität in der anderen Bibliothek verwendet wird.
Kleines Beispiel: Man nehme eine Website mit Benutzerverwaltung. Diese haben in der Regel eine hierarchische Gruppenstruktur in Form eines Baumes. Als Entwickler freut man sich natürlich ein Keks, wenn man bereits in einer Bibliothek (nennen wir sie libA) ein System findet, was einen sowas bereit stellt. Jetzt möchte man diese aber zum Beispiel als XML exportieren, was libA nicht bereit stellt, aber dafür libB. Einfach übergeben dürfe meist scheitern, weil beide andere Strukturen haben. Auch wenn sie womöglich auf Interfaces aufbauen, die völlig identisch aufgebaut sind, kann libB einfach sagen “Ne, du hast das falsche Interface”. Nun hat man zwei Möglichkeiten: Konvertieren (Bei der Ausgabe, Zwischendurch, oder bei der Eingabe (Wrapper)), oder man baut sich eine eigene Baumstruktur, die die benötigten Eigenschaften beider Bibliotheken vereint, was im schlimmsten Fall zu einer völlig überladenen Struktur führt.
Nagut, ob es nicht noch weitere Möglichkeiten gibt, ist mir zur Zeit nicht bewusst, zumindest scheint es auf wenig hübsche Konstruktionen hinaus zu laufen. Schöner wäre es natürlich sowas per se zu standardisieren. Auch wenn eine Bibliothek nicht gleich von sich aus (Abwärtkompatibilität und so) die passende Schnittstelle anbietet, ist es dieser Bibltiothek dafür möglich einen eigenen Wrapper anzubieten.
Einige mögen sagen “Es gibt doch Pattern, an die man sich halten kann/soll”. Ja, das ist schön und gut, aber mach mal jemand ein Type-Hint auf ein abstraktes und verschriftliches Pattern
Ausserdem bestehen diese meist aus größeren Problemen, als “Wie sieht eine geordnete Liste aus?”, was auch nur verständlich ist. Schließlich ist eine geordnete Liste auch nur irgendwie ein Array, was sortiert ist. Für die Methoden gibt es da leider keinen Unterschied und im schlimmsten Fall sortiert jede Methode, die eine Ordnung erwartet, selbst. Oder eine Methode geht einfach davon aus, dass sie sortiert ist, jemand Drittes, der sie verwenden will, weiß das nicht und nichts geht mehr.
Und nochmal einige mögen sagen “Das ist doch voll Overhead!”. Auf so eine Diskussion lasse ich mich schon lange nicht mehr ein. OOP selbst ist Overhead und zudem muss man immer zwischen Komplexität und Flexibilität abwägen. Man kann jeden Code bis zur Unkenntlichkeit optimieren (irgendwann landet man bei Assembler mit eingebautem Webserver), aber wer soll den pflegen? Mehr sag ich dazu nicht ![]()
Als abschließendes Wort überlege ich schon einige Zeit in dieser Richtung einige Experimente zu machen. Im Gegensatz zu was ich bei SPL mal gesehen habe, plane ich allerdings nicht die primitiven Typen in Zwangsjacken zu packen. Für alle, die das wollen, empfehle ich Tomcat, weil PHP hat eben eine Stärke in seiner Typschwäche. Da aber casts auf Objekte eh immer so eine Sache sind, kann man die auch gleich einpacken
Ich werd mich dazu äussern, falls ich da etwas habe, auch wenn es vielleicht nur eine andere Meinung ist
Gruß, KingCrunch
21. Dezember 2007 um 23:59 Uhr
Ich kann mich bei dir nur bedanken fuer diese genialen Informationen und moechte gerne mehr Informationen haben. Wenn du mehr hast, wuerde es mich freuen, wenn du mir die geben koenntest. Kannst mir auch direkt eine email schreiben.
31. Dezember 2007 um 01:38 Uhr
Uhi, ich konnte leider nicht so viel mit den Informationen anfangen, habe versucht n bissle ueber google zu stoebern, aber leider nichts gefunden. Kannst du mir vielleicht weiterhelfen?
31. Dezember 2007 um 13:57 Uhr
Ich kann zwar nicht genau folgen, welche Informationen konkret nun unzureichend sind, aber für SPL habe ich im neuen Jahr eine deutsche Übersichtsseite geplant. Ich werde mal schauen, inwieweit ich das fertig bekomme
MfG, KingCrunch