Jedes große Projekt, dass Entwickler von Internet-Applikationen erstellen, wird meist mit Hilfe eines Frameworks realisiert. Es dient als Rahmen um das Programm und nimmt dem Programmierer immer wiederkehrende Arbeiten ab. Neben eingebauten Sicherheitsfunktionen sind oft Formulargeneratoren oder Validatoren an Bord. Für den Datenbankzugriff wird meist ein ORM (Object Relational Mapper) bereitgestellt, dass Tabellenzeilen in Form eines Objekts wiederspiegelt. Andere wiederum implementieren den Datenbankzugriff über das Active Record Pattern, eine simple Variante des ORMs. In diesem Artikel werden bekannte PHP-Frameworks beleuchtet und Vor- und Nachteile aufgezeigt. Alle Frameworks haben eines gemeinsam: Sie implementieren das MVC-Pattern, ein Muster zur Trennung von Logik, Design und Zugriffe auf die Persistenzschicht.
Zend Framework
Der “Urvater” aller PHP-Frameworks stammt von Zend Technologies. Dieses Unternehmen ist aktiv an der offiziellen PHP-Entwicklung beteiligt, eine gewisse Nähe zur Programmiersprache ist also gegeben. In Forenbeiträgen fällt dieser Name immer wieder, wenn ein User nach einem geeigneten Framework fragt. Tatsächlich ist dieses Framework, geschaffen mit Hilfe der PHP-Community, ein riesiges Projekt. Streng genommen handelt es sich hierbei jedoch eher um eine Klassensammlung als ein ineinander verknüpftes Rahmenwerk. Diese Bibliotheken – etwa ein Barcode-Generator oder eine PDF-Schnittstelle – sind jedoch ineinander perfekt integriert.
Aktuell steht die Version 2.0 in der Entwicklung und steht kurz vor der Veröffentlichung. Da diese Version mit Namespaces arbeitet, ist PHP 5.3 aufwärts Pflicht.
Aufgrund der Verbreitung finden Fragende auch in vielen Foren schnell Hilfe durch andere Entwickler. Die Dokumentation ist auch auf deutsch, jedoch an vielen Stellen eher mäßig übersetzt.
CodeIgniter
CodeIgniter ist ein Framework, das sich gezielt an Einsteiger richtet. Es beherrscht verschiedene Designmuster nur rudimentär, aber Anfänger wird diese Tatsache nicht stören. Einsteiger können mit diesem Framework erste Schritte in der MVC-Welt wagen, ohne sich Gedanken um die Implementierung von Drittbibliotheken zu machen. Besonders hervorzuheben ist die gut dokumentierte Anleitung, bei der die Hemmschwelle, sich mit diesem Framework zu befassen, deutlich gemindert wird.
Sobald man etwas Erfahrung gesammelt hat, möchte man schnell “mehr” Funktionalität. Andere Frameworks werden da schnell interessant. Bei genauer Betrachtung des Source Codes sieht man zwar eine ebenfalls gut dokumentierte Arbeit, jedoch wird hier weitesgehend auf Coding-Standards verzichtet und von der Programmier-Community belächelte Eigenschaften, etwa globale Variablen, werden Klassenübergreifend genutzt. Als eines der wenigen Frameworks unterstützt dieses allerdings auch ältere PHP-Versionen.
Wer einen Schritt weiter gehen möchte, sich jedoch nicht zuviel zutraut, sollte einen Blick auf das Framework Kohana werfen: Dieses entstand auf Basis von CodeIgniter und wurde an vielen Punkten verbessert. Nachteilig ist jedoch die nicht durchgängig qualitative Dokumentation.
Besonders im englischsprachigen Raum befindet sich ein breiter Support für das Framework.
CakePHP
Dieses Framework versucht dem Entwickler, besonders viel Arbeit abzunehmen. Dabei werden CRUD-Prozesse (Create, Read, Update, Delete) fest mit den Controllern verbunden, im günstigen Fall muss sich der Entwickler nicht auf das Bereitstellen von Edit-Formularen konzentrieren. Voraussetzung dafür ist das strenge Einhalten von Namenskonventionen, damit das Framework weiß, welche Controller-Action zu welchem Object-Model gehört. Besonders viel wurde sich von dem Ruby-Framework “Ruby on Rails” (kurz: RoR) abgeschaut. Dies ist nicht unbedingt die schlechteste Methode, ein solides Framework bereitzustellen.
Nachteilig ist jedoch die im Gegensatz zu den oben genannten Frameworks geringere Verbreitung sowie die schlecht strukturierte Dokumentation. Besonders Einsteiger werden von der “Magic”, die das Framework implementiert, schnell überfordert sein.
Symfony
Das Symfony-Framework ist in der Welt der PHP-Frameworks eine Art “Shooting-Star”. Erst seit 2005 veröffentlicht, hat es bereits seit langem unter professionellen PHP-Entwicklern einen solides Image erreicht. Unter der Direktive von Fabién Potencier wurde ein mächtiges Framework aufgestellt, das vor kurzen in der Version 2 erschienen ist. Wie kein anderes Framework werden hier Prozesse abgekapselt, um einen möglichst hohen Wiederverwendungswert einzelner Komponenten zu erreichen. Dafür werden die Komponente in sogenannte “Bundles” gegliedert, die dank durchdachter Konfigurationsstruktur völlig flexibel in bestehende Anwendungen integriert werden können. Viele Anwendungen sind bereits in Form eines Bundles erhältlich, die Arbeit für den Entwickler wird hier auf ein Minimum reduziert. Auch viele “lästige” Aufgaben lassen sich über bereitgestellte Befehle via Konsole bewältigen. Besonders im Enterprise-Bereich ist das Nutzen dieses Frameworks eine sehr gute Wahl.
Aufgrund der hohen Komplexität werden Fragesteller nur bedingt auf Hilfe im Internet stoßen. Die Online-Dokumentation ist zwar übersichtlich aufgebaut und hübsch strukturiert, jedoch wird nicht immer ins Detail gegangen. Ein detailliertes Fachbuch in deutsch würde hier sehr viel helfen.
Slim
Das Framework “Slim” steht hier stellvertrenend für andere sogenannte Micro-Frameworks. Im Gegensatz zu den oben genannten verstehen diese Micro-Frameworks sich darauf, nur einen rudimentären Rahmen bereitzustellen. Das bedeutet oft, dass lediglich auf das Trennen von Code und Design Wert gelegt ist; andere Entwicklungsprozesse liegen in der Hand des Entwicklers. Komplette Bibliotheken werden nicht mitgeliefert. Besonders für kleinere Seiten sind diese Micro-Frameworks auf jeden Fall einen Blick wert, da ansonsten schnell die Gefahr besteht, Over-Engineering zu fördern.
Fazit
Es existieren noch hunderte andere PHP-Frameworks. Anwender haben oft die Qual der Wahl, besonders Anfänger wissen oft nicht, womit gestartet werden soll. Es gibt dabei kein richtig oder falsch: Wichtig ist, dass der Entwickler mit einem bestimmten Paket den besten Workflow erreicht. Unser Tipp: Einsteiger sollten sich an CodeIgniter orientieren, erfahrene sollten sich auf Symfony2 beschränken. Wenn das “Zend Framework 2″ fertiggestellt ist, ist es sicherlich eine Alternative.





