phpframework_header

PHP Frameworks im Vergleich

Von am 28.02.2017

Für komplexere Projekte mit umfangreicher Funktionalität zahlt es sich oft aus ein Framework zu verwenden. Für PHP (wie auch für andere Programmiersprachen) gibt es Frameworks allerdings schon wie Sand am Meer. Welches davon das Beste ist liegt teilweise im Auge des Betrachters und hängt auch mit der geplanten Funktionalität der Applikation zusammen. Ich habe es mir zur Aufgabe gemacht 4 bekannte PHP Frameworks, ohne diese vorher gekannt zu haben, auszuprobieren und zu vergleichen. Im Vergleich stehen sich Laravel, Symfony, Zend und Yii gegenüber. Der Vergleich basiert auf einer kleinen Testapplikation die ich mithilfe der einzelnen Frameworks jeweils Programmiert habe. Um die Unterstützung der CRUD Funktionalität der Frameworks zu testen habe ich eine Todo App programmiert, in der Todos angezeigt, verändert oder gelöscht werden können bzw. neue Todos erstellt werden können. Meine Erfahrungen mit den einzelnen Frameworks möchte ich in folgende Kategorien unterteilen:

  • Struktur (Ordner, Dateien)
  • Bedienbarkeit (Konsolenbefehle etc.)
  • Support/ vorhandene API
  • Erweiterbarkeit (dazu installieren von Packages etc.)

Die Todo App ist natürlich bei weiten keine Applikation, für die man ein Framework zum Realisieren bracht –  sie dient rein zu Veranschaulichungszwecken.

Struktur

Dur Grundlegende Struktur aller 4 Frameworks ist dieselbe. Das zugrundeliegende Prinzip ist MVC. Die Files sind also in Model, View und Controller aufgeteilt. Wie diese 3 Komponenten im Framework Directory abgelegt sind, ist in allen 4 Frameworks unterschiedlich, die Bezeichnungen der Ordner sind aber oft gleich bzw. ähnlich. Ordner sind oft nur anders verschachtelt. Man bekommt also mit der Zeit ein Gefühl, wo man welches File findet. Am übersichtlichste ist meiner Meinung nach die Projektstruktur von Yii. Alle wichtigen Komponenten die benötigt werden sind in Unterordnern innerhalb des protected-Ordners zu finden. Von Bedeutung sind hier die Ordner config, module, views und controllers. Zend hat für mich die unübersichtlichste Struktur. Dateien überschreiben teilweise andere Dateien, die aber in einer komplett anderen Ordnerstruktur liegen. Ein Beispiel: im config-Ordner in erster Ebene gibt es die Datei modules.config.php, dies ist die allgemeine Konfigurationsdate für alle Models. Jedes Model selbst hat aber in seinem eigenen Order in einem weiteren config-Unterordner nochmals eine eigene module.config.php Datei, die die zuvor erwähnte überschreibt. Ist man nicht ganz bei der Sache, kann es schnell passieren das man aus Versehen in die falsche Datei schreibt.

Strukturvergleich - Laravel,Symfony,Zend,Yii

Strukturvergleich – Laravel,Symfony,Zend,Yii

Bedienbarkeit

Grundsätzlich lassen sich alle 4 Frameworks mittles command-line Tool bedienen. Man kann Controller und Models erstellen, Migrationen für die Datenbank durchführen, die Applikation bzw. .den Server starten/stoppen und vieles mehr. Für Laravel werden diese Befehle mit „php artisan“ ausgeführt, für Symfony mit „php bin/console“, Zend hat das „zf-tool“ und Yii kommt neben dem gleichnamigen command-line Tool sogar standardmäßig mit einer Benutzeroberfläche – Gii – die es ermöglicht, ganz einfach die benötigten Komponenten erstellen zu können. Wenn man eine Standard-Skeleton-App von Yii erstellt, muss Gii nur noch aktiviert werden.

Gii - Yii Code Generator

Gii – Yii Code Generator

Support

In der heutigen Zeit gibt es zu jeder noch so kleinen Aufgabe ein Tutorial in dem man sich das Framework anschauen und verstehen lernen kann – möchte man glauben. Für Laravel und Symfony gibt es gute „Getting Started“ Sektionen auf den jeweiligen Homepages der Frameworks bzw. gibt es unzählige Videos auf Youtube und Blogposts vieler Webdeveloper. Auch für Yii gibt es auf der Homepage des Frameworks gute Einsteiger-Tutorials. Einzig und allein bei Zend gab Probleme, da einiges auf der offiziellen Homepage anscheinend noch für eine ältere Zend Version ist, oder trotz Befolgen der Schritt für Schritt Anleitung einfach nicht funktioniert hat. Die Fehlerbehebung war teilweise nur mit sehr viel googlen möglich.

Erweiterbarkeit

Alle Frameworks lassen sich Problemlos mittels Installation von zusätzlichen Packages erweitern. Für Laravel war dies zum Beispiel von Nöten, da die Form Helpers zum einfachen Erstellen und Verarbeiten von Formularen in Laravel 5 nicht mehr mitgeliefert werden. Auch bei Yii wurde ein weiteres Package zur korrekten Darstellung von Formularen bzw. Tabellen nachinstalliert. Die Installation erfolgt in allen Frameworks entweder ü er das command-line Tool oder mittels Download und Einpflegen in das richtige Unterverzeichnis. Bei Verwendung der zweiten Methode muss das Package noch zusätzlich in der composer.json eingetragen werden.

Fazit

Natürlich hat grundsätzlich jedes Framework seine Daseinsberechtigung. Ich glaube auch, das die Wahl des Frameworks gar nicht wirklich von der Art der geplanten Applikation abhängt, sondern eher von den persönlichen Vorlieben der Programmierer bzw. vom Können. Yii ist durch die grafische Benutzeroberfläche sehr einfach zu bedienen, allerdings ist es mit persönlich unsympathisch, weil es „hinter den Kulissen“ etwas komplizierter wirkt als zum Beispiel Laravel oder Symfony. Außerdem ist die Repräsentation des Frameworks nicht wirklich ansprechend. Zend ist in diesem Vergleich mein persönlicher Verlierer. Hauptgründe dafür sind die unzureichende bzw. teilweise verwirrende Dokumentation bzw. Tutorial-Verfügbarkeit und die allgemein schlechteste Struktur des Codes selbst. Laravel und Symfony nehmen sich nicht viel – hauptsächlich deshalb, weil Laravel auf Symfony aufbaut. Beide sind solide Frameworks mit guter Dokumentation, akzeptablem grunddesign und einer relativ übersichtlichen Struktur. Mein Favorit ist trotzdem Laravel, da dieses Framework meiner Meinung nach noch ein bisschen mehr durchdacht ist als Symfony.

1 Kommentar

  • codepushr am 28.02.2017 um 13:31

    Mich würde es interessieren, in wie fern Laravel technisch ‘durchdachter’ ist als Symfony, zumal ein großer Teil auf den Symfony Components aufbaut. Außerdem ist Symfony’s Bundle System wundervoll modular, was gerade bei größerem Projekten praktisch ist.

    Ich gebe allerdings zu, dass aus Marketingsicht Laravel viel bessere Arbeit geleistet hat, sie haben relativ schnell eine zeitgemäße, junge (!) Community aufgebaut und früh mit Konferenzen und Werbung skaliert. Das spiegelt sich natürlich in den zahlreichen Tutorials, Guides usw. wider.

The comments are closed.