PHP 7 Frameworks - Das Richtige für mein Projekt

Die Zeiten in denen statische Anwendungen für Firmen als ausführbares Programm erzeugt wurden sind endgültig vorbei. Heutzutage programmiert man eine HTML Anwendung auf die von Überall in der Firma zugegriffen werden kann. Eine Browser-Anwendung lässt sich viel leichter warten und erweitern. Dafür kommen sogenannte Web-Frameworks zum Einsatz die bereits die wichtigsten Funktionen, die benötigt werden, bereitstellen

Cloud GearsEin Web-Framework (Gerüst) hat die Aufgabe die verschiedenen Funktionen einer Anwendung z.B. die Steuerung der Aufgabe, Verwaltung der Datenbank, Prüfung der Eingaben zu verbinden. Je nachdem liefert es komplette HTML Seiten oder nur Json bzw XML Daten an ein JavaScript-Programm im Browser  aus. Unterschieden wird daher meist zwischen model-view-controller Frameworks und kleinen Web Application frameworks.

Die Wahl des richtigen Frameworks hängt im wesentlichen von den Anforderungen an die spätere Anwendung ab.

Vorrangige Fragen

  • Wie groß ist das Projekt?
  • Wie viele Nutzer wird es haben?
  • Welche Funktionen soll es bieten?
  • Soll es kontinuierlich erweitert werden?
  • Stehen mir die notwendigen Ressourcen für Wartung und Betrieb zur Verfügung?

Nachrangige Fragen

  • Welchen Status hat das Framework in der Community?
  • Wird es weiterentwickelt und wie viele 3D Party Entwickler gibt es.
  • Wie ist die Dokumentation?
  • Verwendet es neue Funktionen wie Namespaces die mit PHP5.5 eingeführt wurden?
  • Bietet es LTS Support für die Versionen oder besteht zu befürchten dass die Anwendung später umständlich auf eine neue Version migriert werden muss.
  • Wie schnell werden Anfragen bearbeitet und ist Caching, Optimierung möglich bzw. notwendig.

Als Technologie kommen üblicherweise Java und Ruby (Enterprise) bzw Python und PHP zum Einsatz. PHP Frameworks wurden zwar immer belächelt. Allerdings ist z.B. Symfony seit Jahren auch bei größeren Projekten und Startups erfolgreich im Einsatz. PHP Frameworks haben sich als stabil, kostengünstig und zukunftsorientiert erwiesen während manche RUBY und Java Anwendungen regelrecht implodiert sind.

Mit PHP 7 gehören viele Nachteile die die Skriptsprache hatte der Vergangenheit an. PHP 7 ist nicht nur wesentlich schneller sondern es bietet auch Technologien die für moderne und sichere Frameworks von Vorteil sind. (z.B. Typisierung)

Grund genug sich mal drei unterschiedliche, moderne PHP Frameworks anzuschauen.

Laravel

Laravel ist definitiv die beste Wahl für größere Projekte mit mehreren Entwicklern. Es ist am ehesten mit Symphony zu vergleichen aber moderner und unserer Meinung nach auch komfortabler. Es wird üblicherweise mit composer installiert und aktuell gehalten. Laravel ist ein general purpose framework. Das bedeutet fast alle denkbaren Funktionen von Fomular-Prüfung über Cache-Schnittstellen bis zur Mehrsprachigkeit sind vorhanden.

Nach der Konfiguration können neue Komponenten, Tabellen über ein Kommandozeilentool (Artisan) hinzugefügt und migriert werden. Das geht, wenn man die Idee dahinter verstanden hat, erstaunlich komfortabel und schnell. Insgesamt braucht laravel allerdings aufgrund der Komplexität eine etwas längere Einarbeitungszeit. Dafür gibt es eine gute Dokumentation und vor allen Dingen hervorragende Video Tutorials die man auf der Webseite für ein paar Euro durchgehen kann. Nicht umsonst hat sich Laravel innerhalb kürzester Zeit zum beliebtesten PHP Framework weltweit entwickelt.

Lumen

Von Laravel gibt es einen Fork namens Lumen der ganz auf Geschwindigkeit optimiert ist und das Original Framework auf die grundlegenden Funktionen (Route, Cache, Auth, DB, Views u.s.w.) reduziert.  Lumen wird von den Machern als ein Micro-Framework bezeichnet. Das ist übertrieben, da Lumen eigentlich komplett ist und nicht vorhandene Funktionen über Middleware und ServiceProvider nachgerüstet werden können. Lumen benötigt PHP7.0 und höher.

laravel.com/

Laravel


Codeigniter

Auch Codeigniter ist ein general purpose Framework mit einem model-view-controller Ansatz. Es ist vor allem für die schnelle Entwicklung kleiner und mittelgroßer Projekte gedacht. Es benutzt keinen strikten Namespace Ansatz die Laravel und Symphony und lässt damit dem Entwickler größere Freiheiten. Dafür gilt Codeigniter als sehr stabil und vor allem schnell. Es lässt sich mit zahlreichen Libraries erweitern die viele Anforderungen abdecken. Entwickler lieben vor allem die vielen sinnvollen Funktionen der Helper Klassen die sehr elegante Lösungen ohne großen programmieraufwand ermöglichen.
Der Charme von Codeigniter ist seine klare verständliche Struktur die sich jedem sofort. erschließt der bereits mit MVC-Frameworks wie Joomla gearbeitet hat.

codeigniter.com/

CodeIgniter


Slim Framework

Slim ist ein echtes Micro-Framework. Es eignet sich vor allem als Application Framework für Javascript Anwendungen die statt einer ganzen Html Seite json oder XML Daten erwarten und für REST APIs. Grundsätzlich lässt es sich aber auch mit einer Erweiterung für Twig Templates für kleine Web Anwendungen gebrauchen. Technisch geht Slim einen ungewöhnlichen Weg um Erweiterungen einzubinden. Slim kommuniziert indem es PSR 7 http request und response Objekte erzeugt und z.B. an Erweiterungen (Middleware) übermittelt. Slim ist dafür um den Faktor 10 schneller als Laravel.

slimframework.com

Slim Framework


 

Zwar unterstützen alle drei Frameworks noch PHP5.6. Aber es ist nur eine Frage der Zeit bis auch hier alte Zöpfe abgeschnitten werden. Dann sollten sich die Geschwindigkeit noch einmal deutlich erhöhen.

Die bekanntesten PHP Frameworks im Vergleich

Siehe Google Trends

 

Insgesamt gibt es natürlich noch viele möglicherweise relevante Frameworks für PHP. Das Spektrum reicht von 100Kb micro Frameworks die außer dem routing keinerlei Komfort bieten bis zu in C geschriebenen PHP-Erweiterungen wie Phalcon die Anfragen rasend schnell verarbeiten aber nicht erweiterbar sind.

Von zwei Sachen raten wir deutlich ab. Zum einen die Anwendung from the scratch ohne Framework entwickeln zu wollen. Der Aufwand lohnt nicht. Ohne grundlegende Kenntnisse ist das Resultat nie so elegant, sicher, übersichtlich und erweiterbar wie eine Anwendung mit einem renommierten Framework. Zum zweiten sollte man der Versuchung widerstehen die Kernfunktionen eines Frameworks selbst zu verändern. Meist gibt es eine Möglichkeit die gewünschte Funktion über Erweiterungen zu bauen. Wenn nicht, dann hat man das falsche Framework gewählt.

Links