PHP-Frameworks im Test

Artikel bewerten:
Dieser Artikel wurde noch nicht bewertet. Bewerten Sie diesen Artikel als erstes!

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

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

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

Bitte geben Sie Ihren Kommentar hier ein. Füllen Sie alle mit * gekennzeichneten Felder vollständig und korrekt aus. Um zum Artikel zurückzukehren klicken sie bitte hier. Zur Formatierung des Textes können folgende BBCode-ähnliche die Zeichen verwendet werden:Hinweis: Formatierungszeichen in Name und E-Mail-Adresse werden nicht akzeptiert.

Name:*
E-Mail:*

Kommentar:


Bestätigungscode:*