PHP-Frameworks im Test
Bitte beachten Sie, dass sich die hier aufgeführten Inhalte im Jahr 2008/2009 erstellt wurden und sich daher auf
zu diesem Zeitpunkt erhältliche Versionen der Test-Kandidaten beziehen.
Wir übernehmen daher keine Garantie dafür, dass die abgedruckten Informationen auch heute noch korrekt sind und
überlegen derzeit den Artikel neu aufzulegen um Ihnen einen aktuellen Vergleich bieten zu können.
Über Fragen und Anregungen freuen wir uns jederzeit. Nutzen Sie dazu gerne unser
Forum!
Für Entwickler, die aus Zeit- oder Kostengründen auf den Einsatz von fertigen Klassen-Bibliotheken
und Frameworks setzen, ist es hilfreich einen überblick über die auf dem Markt vorhandenen
Frameworks und deren Leistungsfähigkeit zu bekommen. Jeder Entwickler steht früher oder später vor
der Wahl, ein für ihn passendes Framework auszuwählen oder selbst zu implementieren.
Da sich die vielen potentiellen Kandidaten im Funktionsumfang teilweise überschneiden, an anderer
Stelle jedoch individuelle Wege gehen, fällt ein Vergleich nicht leicht.
Die Idee des Vergleichs von unterschiedlichen Web-Entwicklungs-Frameworks entstand in einer angeregten
Diskussion in
PHPFriend.de-Forum
als es einmal mehr um das Thema Funktionen in PHP-Frameworks ging. Erfahrenen Entwicklern soll der
Artikel zur (Neu-)Orientierung dienen und neue Blickwinkel für die Bewertung der hier getesteten
Frameworks erschließen.
Dipl.-Ing. (FH)
Christian Achatz studierte Elektrotechnik im Fachgebiet
Automatisierungstechnik an der FH Schweinfurt und beschäftigt sich mit Infrastrukur- und
Software-Architekturen für Web-Anwendungen. Zu seinen Aufgaben-Gebieten gehören die
Evaluierung bestehender Strukturen, Konzeption und Design von neuen Hard- und Software-Systemen auf
OpenSource-Basis. In den vergangenen Jahre lagen seine Schwerpunkte dabei auf dem Design und der
Implementierung von PHP- und MySQL-basierten Anwendungen und Anwendungsgrundlagen und LINUX-basierten
Cluster-Lösungen für das Hosting von Web-Anwendungen.
Der vorliegende Artikel gliedert sich in die Bereiche
- Erläuterung der Bewertungskriterien
- Vorstellung der Test-Kandidaten
- Detail-Bewertung der Frameworks
- Zusammenfassung der Ergebnisse
In den Kapiteln zur Detail-Bewertung werden viele Code-Beispiele eingearbeitet sein, die als Referenz
oder als Ressource auf der Suche nach Code-Snippets genutzt werden können. Am Ende jeder Seite
wird eine Kommentar-Funktion angeboten, die sich als konstruktive Feedback-Möglichkeit für
die jeweilige Seite versteht.
Zunächst sollen Bewertungskriterien definiert werden, um die zu testenden Frameworks objektiv
bewerten zu können. Bei der Auswahl der Kriterien wurde darauf Wert gelegt, dass diese
möglichst unabhängig vom später bewerteten Produkt gehalten sind. Von einer
Einzel-Gewichtung der Bereiche wurde aus Transparenzgründen abgesehen.
Unter dieser Gruppe von Bewertungs-Kriterien soll der Eindruck des Projektes nach Außen untersucht
werden. Darunter fallen
- Roadmap des Projekts
- Aktualität der Version
- Verfügbarkeit der Release-Packages in verschiedenen Formaten
- Betrieb und Verfügbarkeit von CVS-/SVN-Repositories
- Art und Umfang von Bug-Tracking / Ticketing
- Release für PHP 4
- Release für PHP 5
Die Bewertung der Installation wird in zwei Komplexe unterteilt:
"Extract & Go" soll untersuchen, wie einfach ein Einsteiger ein effektives Ergebnis erhalten kann,
ohne große Konfigurations- oder Installations-Routinen durchlaufen zu müssen.
Es soll ebenso beurteilt werden, wie Demo-Material präsentiert wird und dabei hilft, den
Einstieg zu erleichtern.
Der Abschnitt "Konfiguration" bewertet die Komplexität der Konfiguration des Test-Kandidaten. Ein
Nebenprodukt des Kapitels wird auch eine erste Bewertung der Einsteiger-Ressourcen des jeweiligen
Probanden sein.
Kapitel 1 dieses Abschnitts beschäftigt sich genauer mit der vorhandenen Demo-Software und deren
Dokumentation. Es wird versucht diese als Einstieg in die Implementierung mit dem vorliegenden
Framework zu nutzen. Gerade für Einsteiger ist es sehr wichtig einen schnellen ersten Erfolg
erziehlen zu können, wozu nach Meinung des Autors eine Demo-Software gut geeignet ist. Als
wichtig wird in diesem Zusammenhang vor allem erachtet, dass die Demo-Ressourcen ohne weiteres Zutun
des Entwicklers lauffähig sind, da ein Neuling in diesem Stadium der Einarbeitung noch kein
erweitertes Debugging leisten kann.
Als einen weiteren Bereich wird das Kapitel einen Abschnitt über die vorhandenen Einführungs-Manuals
bzw. Quickstarts umfassen. Aus diesen gewinnt der Einsteiger einen Überblick über Funktionen
des Frameworks, bzw. Anleitungen für den Einstieg in die Programmierung mit dem Framework.
Da das Erstellen einer Webseite im richtigen Leben eines Entwicklers immer mehrer Bereiche umfasst,
wird in diesem Kapitel das Framework umfassender in der Praxistauglichkeit begutachtet. Zum Umfang
gehören die Teile
- Template-Bau und Layoutgestaltung,
- Handling von Controllern (im Sinne von MVC),
- Erweiterbarkeit der GUI-Komponenten bzw. GUI-Helper,
- die Erstellung komplexer Layouts und
- das Formular-Design.
Um die Untersuchungen konsequent unter gleichen Bedingungen ablaufen zu lassen, soll als erste
Übung eine "Hallo Welt"-Seite erstellt werden, um mit dem Framework ein wenig besser in
Berührung zu kommen. Nach einer kurzen Einarbeitungszeit stellt sich die auf der folgenden
Abbildung gezeigten Webseite nachzubauen.
Dazu müssen
- ein Master-Design mit dem Basis-Code der Seite,
- ein Menü-Template,
- ein Top-Menü-Template,
- ein Header-Bereich und
- ein Content-Bereich
erstellt und mit den entsprechenden Inhalten gefüllt werden. Um die Betrachtungen in Grenzen zu
halten ist es Aufgabe maximal 3 Content-Seiten inklusive funktionierender Navigation zu erstellen.
Als weitere Aufgaben stellen sich die Evaluation der Möglichkeiten im GUI-Bau, sowie das Erstellen
eines Formulars. Das Eingabe-Formular muss mit einer automatischen Validierung aufwarten, die bei
falschen Eingabeen sowohl die betreffenden Felder rot markiert, als auch passende Text-Ausgaben erzeugt.
Wichtig ist dabei, dass die bereits getroffenen Eingaben des Benutzers auch wieder im Formular
erscheinen.
Ein sehr populäres Feature zur Suchmaschinenoptimierung einer Webseite (SEO) ist das so genannte
URL-Rewriting. Hier werden einfache Konstrukte wie
/?param1=value1¶m2=value2
in Ordner-Pfade der Form
/param1/value1/param2/value2 umgewandelt um der Suchmaschine
vorzugeben, hinter der Struktur der Webseite stecke eine "echte" Ordner-Struktur. Ziel der Untersuchung
ist es, aufzuzeigen, welche Möglichkeiten die Kandidaten bieten um ein solches URL-Layout
anbieten zu können. Weiterhin soll untersucht werden, wie generisch das URL-Design gehandhabt
wird und welche Tools zur Erzeugung und zur Manipulation von Links angeboten werden.
Das Kapitel "Design des Frameworks" möchte einen genaueren Blick unter die Motor-Haube wagen.
Zunächst sollen der Umfang der mitgelieferten Komponenten betrachtet werden. Anschließend
wird das Design des Frameworks hinsichtlich Einsatz von Design-Pattern und Struktur des Quellcodes,
sowie das Design der einzelnen Klassen untersucht.
Im zweiten Teil der Betrachtungen geht es um die Einsetzbarkeit des Frameworks als Basis für
Applikationen, die in mehreren Umgebungen eingesetzt werden, bzw. die Möglichkeiten, die der
Entwickler hat um die bestehenden Funktionen zu erweitern.
Der letzte Punkt beschäftigt sich mit dem Thema
Scaffolding. Unter
Scaffolding verstehen der Autor die Möglichkeit des
Rapid
Prototyping an Hand von im Framework enthaltenen Methoden und Mechanismen. Es soll den
Entwickler dabei unterstützen schnell und einfach Datenbank-gestützte Applikationen zu
erstellen ohne zu tief in die Materie von
CRUD-Funktionen
eintauchen zu müssen.
Der Begriff "Dokumentation" ist sehr vielseitig. Gerade bei komplexen Aufgaben ist ein Blick in den
Quellcode sehr wichtig. Einerseits, um evtl. nicht genau dokumentierte Funktionen, andererseits um die
genauen Parameter für bestimmte Methoden nachzuschlagen. Deshalb sollen in diesem Bereich der
Evaluation die Dokumentation des Quellcodes und die Art und der Umfang der API-Dokumentation beleuchtet
werden. Ebenso wichtig sind Einführungen, Tutorials und Anwendungsbeispiele um den Einstieg und
die Arbeit mit dem Framework so einfach und effizient wie möglich zu gestalten. Weiterhin sollen
ChangeLogs begutachtet werden, da diese eine wichtige Ressource bei Einführung neuer Versionen
darstellen.
Im Bereich Support untersucht der Autor die Support-Möglichkeiten, die dem Anwender angeboten
werden. Gerade bei neuen Themen ist es wichtig, dass Support schnell und in ausreichender Qualität
verfügbar ist, bzw. eine offene Diskussion in Foren geführt werden kann. Wichtig sind in
diesem Zusammenhang
- eine Online-Dokumentation,
- Foren und
- ein Wiki.
Abschließend soll die Performance der Test-Kandidaten an Hand der zuvor erstellten Test-Webseite
verglichen werden. Dabei wird die Auslieferungs-Zeit des HTML-Codes in einer Serie von 50 Aufrufen
gemessen und das Ergebnis gemittelt um die Auslieferungszeit unabhängig von momentanen
Belastungssituation der Test-Maschine zu halten.
Getestet wurde auf einem
Fujitsu Siemens Lifebook E2010 mit einem
2,2 GHz P4 mobile Prozessor,
512MB RAM, einer
60GB, 5400U/min IDE HDD, dem
Apache 2.0.52 Webserver und den
PHP-Versionen
4.4.6 und
5.2.1..
» Weiter auf
Seite 2 (Test-Kandidaten).
Möchten Sie den Artikel eine Anmerkung hinzufügen, oder haben Sie ergänzende Hinweise? Dann können Sie diese
hier
einfügen. Die bereits verfassten Anmerkungen und Kommentare finden Sie in der untenstehenden Liste.
Für diesen Artikel liegen aktuell keine Kommentare vor.