Will man nicht wertvolle Entwicklungszeit in ein eigenes PHP Framework stecken, hat man eine Reihe von freien Frameworks zur Auswahl. In diesem Artikel möchte ich keinen direkten Vergleich der Frameworks anstellen. Diese gibt es im Überfluss im Web zu finden – einige davon habe ich in den Links am Ende des Artikels aufgelistet. Statt dessen möchte ich den Einstieg in die drei beliebten Frameworks Zend, Yii und CodeIgniter beschreiben, sowie anschließend einen kurzen Blick darauf werfen wie gut sich große Webanwendungen im jeweiligen PHP Framework umsetzen lassen.
Erste Schritte
Zunächst versucht man sich naturgemäß einen ersten Überblick über die verschiedenen freien PHP Frameworks mittels Vergleich-Listen und subjektiven, sich oft auch widersprechenden Artikeln im Netz zu machen. Nachdem man nun festgestellt hat, dass sich die beliebteren PHP Frameworks offensichtlich in ihren Features kaum unterscheiden bzw. die Vergleiche einem bei der Entscheidung nicht viel weiterhelfen, sucht man deren Webseiten auf. Hier bekommt man einen ersten Überblick über Dokumentation, Community sowie Aufbau einer einfachen Webanwendung.
Yii PHP Framework
URL: http://www.yiiframework.com/
Yii bietet meines Erachtens eine umfangreiche und übersichtliche Dokumentation, eine einfache Einführung mittels des beliebten Blog-Tutorials sowie eine Sammlung von User-Tutorials die unterschiedlichste Themengebiete abdeckt. Da es sich um ein junges Framework handelt, steht im Vergleich eine relativ kleine, aber schnell wachsende Community dahinter.
Nach dem Downloaden und Entpacken des Frameworks kann sofort via ‘yiic’ Tool (Konsolenbefehl) ein neues Projekt erstellt werden:
1 | yiic webapp path/to/webroot |
Im gewählten Verzeichnis wird eine bereits relativ umfangreiche Webanwendung erstellt, auf deren Basis man sofort mit der eigenen Implementierung beginnen kann. Sogar eine einfache Benutzeranmeldung, welche leicht erweiterbar ist, findet sich im eben erstellten Projekt. Aktiviert man das Modul Gii in der Applikations-Konfiguration steht einem ein praktisches Tool zur automatischen Code-Erstellung von Model, Controller, CRUD-Operationen (Create, read, update und delete) und Modulen zur Verfügung.
Zend Framework
URL: http://framework.zend.com/
Das am weitesten verbreitete Framework hat zwar eine sehr umfangreiche Dokumentation, ist aber was den Einstieg betrifft etwas unübersichtlich. Im Gegensatz zum sehr strikt Objekt-orientiert aufgebauten Yii Framework bei dem die Struktur eines Projektes schnell erkannt werden kann. Dafür bietet es eine enorme Flexibilität und hat eine sehr aktive Community.
Auch hier kann ein neues Projekt mittels eines Konsolenbefehls erstellt werden:
1 | zf create project path/to/webroot |
Das dabei erstellte Projekt kümmert sich jedoch ‘nur’ um die notwendigsten Vorgänge und ist daher um einiges schlanker im Vergleich zur Yii – Webanwendung. Mittels des zf – Befehls können weitere Aktionen im aktuellen Projekt ausgeführt werden: Layouts aktivieren, Datenbank-Adapter einrichten, Model erstellen, usw. Durch den flexiblen Aufbau von Zend muss man mit einer etwas längeren Einarbeitungszeit in das Framework rechnen.
CodeIgniter
URL: http://www.codeigniter.com/
CodeIgniter wird im Gegensatz zu den anderen Projekten einfach in ein Verzeichnis entpackt ohne explizit ein eigenes Projekt zu erstellen. Unter dem Ordner application befinden sich die wichtigsten Elemente (Models, Views, Controllers). Durch den simplen Aufbau des Frameworks lassen sich schnell einfache Webanwendungen auch ohne viel Erfahrung in PHP realisieren. Jedoch ist der Umfang von CodeIgniter etwas bescheidener als bei den anderen Frameworks. Auf der Webseite findet man eine gute Dokumentation sowie einige von der Community erstellte Tutorials.
Large-scale Applications
Alle Frameworks bieten eine HMVC-Architektur, wodurch eine klare und einfache Trennung ermöglicht wird – etwa in Frontend und Backend-Bereich. Die bekannte e-Commerce Software Magento (basiert auf dem Zend Framework) setzt zum Beispiel sehr stark auf einen modul-basierten Aufbau. Was die Performance betrifft haben das Yii Framework sowie CodeIgniter wiederrum die Nase vorne, vertraut man den diversen im Web veröffentlichten Benchmarks. Aufgrund des größeren Funktionsumfangs würde ich mich hier entweder für Yii oder Zend entscheiden.
Fazit
Der Einstieg in das Yii PHP Framework ist mir persönlich leichter gefallen, da die Struktur klarer ist und die Webanwendung durch das überlegte Objekt-orientierte Design sehr leicht erweiterbar ist. Das Zend Framework hat jedoch den Vorteil, dass es flexibler und trotz des enormen Umfangs sehr gut dokumentiert ist. Dafür sorgt allein die weite Verbreitung und große Community des Projektes. CodeIgniter bietet sich für die schnelle Entwicklung von kleineren Webanwendungen an.
http://www.phpframeworks.com/
http://www.bestwebframeworks.com/php/
http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks#PHP_2