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!

Die Idee

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.


Der Autor

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 Aufbau

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.


1. Bewertungskriterien

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.


1.1. Allgemeines

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

1.2. Installation

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.


1.3. Erste Schritte

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.


1.4. Erstellen einer Webseite

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.

Beispiel für Bewertungsseite Framework-Vergleich zwischen CakePHP, CodeIgniter, Zend Framework und dem Adventure PHP Framework


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.


1.5. URL-Handling

Ein sehr populäres Feature zur Suchmaschinenoptimierung einer Webseite (SEO) ist das so genannte URL-Rewriting. Hier werden einfache Konstrukte wie /?param1=value1&param2=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.


1.6. Design des Frameworks

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.


1.7. Dokumentation

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.


1.8. Support

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.

1.9. Benchmarks

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).


Kommentare

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.