Update: Ende 2019 wurde das Zend Framework Teil der Linux Foundation und wird ab sofort unter dem Namen Laminas weitergeführt.
Oft hört man zweifelnde Stimmen, wenn Entwickler davon sprechen sowohl kleine als auch große Projekte mit PHP zu realisieren. Für viele ist PHP immer noch eine klassische Skriptkiddy-Sprache.
Spätestens mit dem Verwenden von Frameworks entspricht das aber nicht mehr der Wahrheit. Denn diese helfen dabei, Projekte in gut strukturierter und objektorientierter Umgebung umzusetzen.
Was ist ein Framework und wozu dient es?
- Ein Framework fungiert als Schablone für dein Projekt und bindet verschiedene Technologien, Konventionen und vorgefertigte Teillösungen an dieses.
- Ein Framework soll bei der Entwicklung möglichst viel Arbeit abnehmen, so dass man sich auf die eigentlichen Funktionen seines Projektes konzentrieren kann.
- Einige der Funktionen, die viele Frameworks bieten, sind unter anderem Datenbank-Management, MVC-Struktur und Template-Management.
Welches Framework passt zu mir?
In diesem Beitrag erfahrt ihr, welche Frameworks wir miteinander verglichen haben und für welches wir uns entschieden haben. Welches Framework schlussendlich zu euch passt, müsst ihr natürlich für euch selbst entscheiden.
Wir haben uns die PHP-Frameworks Laravel, Symfony und das Zend Framework zum Vergleich herangezogen.
In folgender Ansicht lässt sich erkennen, dass laut Google Trends das Framework Laravel das am häufigsten gesuchte Framework für neue PHP-Projekte ist.
Welche Vor- und Nachteile bieten diese Frameworks?
Zend-Framework
Das Zend-Framework ist sehr offen gestaltet, wodurch einige Vor-, aber auch Nachteile entstehen.
Auf der einen Seite lässt sich das Framework aus diesem Grund für fast jeden Anwendungsfall gebrauchen. Wiederum ist in diesem Fall ggf. ein höherer Initialaufwand bei Erstellen des Projekts zu erwarten. Hierdurch ist das Framework eher nicht für kleine, sondern für mittelgroße bis große Projekte geeignet.
Ein weiterer für uns wichtiger Vorteil ist der durchdachte Release Plan und die Unterstützung von LTS-Versionen. Auch eine gute Dokumentation und Unterstützung einer großen Community ist geboten.
Das Zend-Framework bietet schon viele nützliche Module zur Verwendung im eigenen Projekt. Diese unterstützen unter anderem bei Formularen, Validierung, Internationalisierung und Entwicklung in einer MVC-Struktur.
Symfony
Symfony gehört zu den umfangreichsten und erweiterbarsten Frameworks.
Mit „Bundles“ lässt sich das Framework quasi endlos erweitern.
Ein Bundle ist ein Paket bestehend aus PHP-Dateien, Styles, JavaScript und Assets. Diese sind meist so aufgebaut, dass sie auch in anderen Projekten wiedereingesetzt werden können.
Vorgefertigte Pakete gibt es unter anderem schon für folgende Funktionalitäten: Formulare, Validierung, Templating, Datenbankmanagement und Benutzerverwaltung. Bundles können nach Belieben bzw. Notwendigkeit installiert werden. So kann das Framework von unnötigen Funktionalitäten freigehalten werden.
Zu guter Letzt kann über Symfony noch gesagt werden, dass auch hier wieder ein gut geplanter Release Plan besteht und LTS-Versionen unterstützt werden. Auch mit einer guten Dokumentation und einer großen Community kann Symfony glänzen.
Laravel
Einer der größten Vorzüge Laravels dürfte dessen Bekannt- und Beliebtheit sein.
Erkennbar ist dies z. B. über Google Trends Statistik weiter oben im Beitrag.
Natürlich sollte dies allein kein Grund sein, auf Laravel zu setzen. Aber eine große Community bringt einige Vorteile mit sich. Dazu gehört unter anderem eine detaillierte und umfangreiche Dokumentation. Auch die Anzahl an Tutorials ist weitaus größer als bei anderen Frameworks.
Auch vom Funktions- und Erweiterungsumfang steht Laravel den anderen Frameworks in nichts nach. Laravel bietet auch für die meisten Aufgabenstellungen vorgefertigte Module.
Aber welche Nachteile hat Laravel im Gegensatz zu anderen Frameworks?
Zum einen wäre da die starre Struktur von Laravel. Will man beispielsweise aus dem MVC-Konstrukt ausbrechen, sieht dies bei Laravel eher schlecht aus. Weiter kann es passieren, dass zusätzlicher Code geschrieben werden muss um, um Flexibilität zu gewährleisten.
Frameworks im Überblick
Stand Mai 2019
FEATURE | ZEND FRAMEWORK | SYMFONY | LARAVEL |
---|---|---|---|
Aktuelle Version Stand Mai 2019 | 3.0 (Stable & LTS) | 4.2 (Stable) 3.4 (LTS) | 5.8 |
Lizenz | Zend Framework License | MIT License | MIT License |
Kommerzieller Support | Ja | Ja | Nein |
LTS-Versionen | Ja | Ja | Ja |
Funktionen und Module
MVC | Ja | Ja | Ja |
Templating | Nein (Nachrüstbar z. B. Twig oder Smarty) | Ja (Twig) | Ja (Blade) |
Dependency Injection | Ja | Ja | Ja |
ORM | Ja (über Doctrine) | Ja (über Doctrine) | Ja |
Internationalisierung | Ja | Ja | Ja |
CRUD Generator | Ja | Ja | Ja (über Fremdlibrary) |
Logging | Ja (PSR-3) | Ja (PSR-3) | Ja (PSR-3) |
Testing Framework | PHPUnit | PHPUnit | PHPUnit |
Security
XSS | Ja | Ja | Ja |
CSRF | Ja | Ja | Ja |
SQL-Injection | Ja (über Doctrine) | Ja (über Doctrine) | Ja |
Auth Modul | Ja | Ja | Ja |
Unsere Entscheidung: Symfony
Spätestens in der Übersichtstabelle lässt sich erkennen, dass sich die Frameworks im Funktionsumfang sehr ähneln. Faktoren außerhalb des Funktionsumfangs die uns wichtig waren sind eine gute Struktur, Zuverlässigkeit und Zeitersparnis durch das Verwenden von schon vorgefertigten Modulen.
Gleichzeitig wollten wir aber auch die Freiheit aus dem Konstrukt ausbrechen zu können nicht verlieren.
Diese Punkte sind unserer Meinung am besten bei dem Framework Symfony gegeben. Aber letzten Endes muss natürlich jeder für sich selber entscheiden, welchem dieser Frameworks man zugetan ist.
Vielleicht hat euch dieser Beitrag auch geholfen, euch für ein Framework zu entscheiden. Oder seid ihr anderer Meinung als wir und nutzt ein anderes? Lasst es uns in den Kommentaren wissen!
Unser Entwickler-Team kann dich bei deinen PHP-Projekten natürlich auch unterstützen. Hierzu kannst du uns gern kontaktieren, sodass wir gemeinsam dein nächstes Projekt planen können.
Du benötigst mehr Ressourcen oder beratende Unterstützung in deinem Projekt? Lass uns schnacken!
Hallo,
ich habe von einem „Experten“ gehört, dass in Symfony seit 2017 angeblich keine Sicherheitsupdates mehr gemacht werden und es als technisch veraltet angesehen wird.
Ist das so ?
(wenn ich mir die Versionshistorie zu 5.0.2 ansehe, dann habe ich den Eindruck, dass da wohl eine Weiterentwicklung stattfindet)
Gruß Jürgen
Hallo Jürgen,
da hast du dir die Antwort im Grunde schon selbst gegeben: Bei Symfony findet weiterhin eine Weiterentwicklung statt.
Es gibt einen regelmäßigen und vorausgeplanten Release-Zyklus, bei dem es sowohl Sicherheits- als auch Feature-Updates gibt.
Ich kann Symfony also weiterhin mit gutem Gewissen empfehlen! 🙂