"Warum nutzt Ihr kein Framework?"

Diese Frage wird gelegentlich an uns herangetragen, häufiger mit dem Hinweis, dass es nahezu fahrlässig sei, kein Framework als Basis zu verwenden.

Was ist überhaupt ein (Web-)Framework?

Ein Webframework (auch Web Application Framework, kurz: WAF oder WF) ist eine Software, die für die Entwicklung von dynamischen Webseiten, Webanwendungen oder Webservices ausgelegt ist. Sich wiederholende Tätigkeiten werden vereinfacht und die Wiederverwendung von Code und die Selbstdokumentation der Software-Entwicklung gefördert. Durch Konzepte wie Don’t repeat yourself, KISS oder Konvention vor Konfiguration werden einfache, klare und mit wenig Aufwand wartbare Strukturen angeboten.

Durch vordefinierte und vorgefertigte Klassen werden häufig gebrauchte Funktionen wie Mailversand[1], sichere Authentifizierung und Authentisierung[2], Sicherheitsfunktionen, Lokalisierung, Performance (z. B. HTTP Caching) oder grundlegende Funktionen für Webformulare vom Framework mitgebracht.

Webframeworks sind darauf ausgelegt sehr schnell lauffähige Webanwendungen zu erstellen. Dazu bieten heutige Webframeworks einen Datenbankzugriff, Templating-Mechanismen, eine saubere Trennung von Präsentation und Code durch Verwendung des Model View Controllers oder Model View Presenters als Architekturmuster, sowie oft auch Möglichkeiten zum Rapid Prototyping durch Scaffolding.


Quelle: Wikipedia

Top PHP Framework Every Developer Must Use in 2017

 

Was sind die Vorteile eines Frameworks?

Ohne Anspruch auf Vollständigkeit:

  • Für alle allgemeinen Aufgaben (z.B. Datenbankzugriff, Datenvalidierung, Benutzerauthentifizierung, Logging, Sessionmanagement, usw.) sind bereits die entsprechenden Funktionalitäten vorhanden, so daß man sich auf die eigentlichen Features konzentrieren kann. Dadurch geht die eigentliche Entwicklung deutlich schneller. ("Rapid development")
  • Entsprechend ausgelegte Frameworks erzwingen das MVC (Model-View-Controller) Pattern.
  • Festgelegte Verzeichnisstrukturen und Namenskonventionen erleichtern die Organisation der Quellen.
  • Durch breite Nutzerbasis finden sich neue Entwickler schneller in das Projekt ein. (Anders gesagt: Wer das Framework bereits kennt, muß sich nur noch in das Projekt einarbeiten.)
  • Gut gepflegte Frameworks sind potentiell sicherer als selbstgeschriebener Code.

 

Welche Gründe sprechen also dagegen?

Ebenfalls ohne Anspruch auf Vollständigkeit.smiley

Die Qual der Wahl

Frameworks sind, wie alles andere auch, Moden unterworfen. Waren vor ein paar Jahren noch CakePHP oder CodeIgniter "State of the Art", ist heute eher Laravel an erster Stelle zu finden. Bezieht man die Performance mit ein, ist hingegen eher Zend führend. Wobei natürlich jedes Framework per Benchmark-Tests belegen kann, dass es das Schnellste ist. wink

Zudem sind die einzelnen Frameworks unterschiedlich ausgerichtet. Einige nehmen für sich in Anspruch, "full stack" Frameworks zu sein, also für jede erdenkliche Aufgabe eine passende Lösung mitzuliefern. Das hat im Umkehrschluß häufig zur Folge, daß selbst für ein simples "Hello World" ein mehr oder weniger großer Overhead geladen wird. Andere Frameworks möchten möglichst modular und performant sein, laden also nach Möglichkeit nur das, was auch wirklich gebraucht wird. Hierdurch ergibt sich dann aber unter Umständen ein nicht unerheblicher "Verwaltungs-Overhead", oder die Vorgaben sind nicht so streng wie bei anderen Frameworks, womit sich der Vorteil fester Strukturen verflüchtigen kann.

Wie auch immer, die Wahl des "richtigen" Frameworks ist nicht damit getan, die Suchmaschine der Wahl nach dem "besten PHP Framework 2017" zu befragen. Es geht auch darum, die Funktionalitäten der verfügbaren Frameworks miteinander zu vergleichen und zu prüfen, wie sie zu den Anforderungen passen. (Siehe auch http://socialcompare.com/en/comparison/php-frameworks-comparison). Anschließend ist es erforderlich, die Kandidaten näher unter die Lupe zu nehmen. Dazu muß man sich einarbeiten. Das kostet Zeit.

Wenn man es ganz genau nimmt, sind allerdings auch PHP Frameworks eher schon wieder "out", denn das Ganze gibt es auch auf JavaScript-Basis. Wenn man also "modern" sein möchte, müssen auch JavaScript-Frameworks wie NodeJS, AngularJS oder Webix mit in die Betrachtung aufgenommen werden.

 

Vorhandenes

Auch wenn BC2 eine Neuentwicklung ist, heißt das dennoch nicht, dass wir komplett bei NULL anfangen. Wir haben bereits eine Vielzahl an spezialisierten Helpern, die teils Methoden selbst implementieren, teils aber auch "nur" Wrapper für externe Bibliotheken sind. So ist etwa der Datenbank Helper im Wesentlichen nur eine Schnittstelle zu Doctrine (welches wiederum Bestandteil des Symfony-Frameworks ist, aber auch solo verwendet werden kann). Letztlich haben wir also schon ein Framework.

BC2 auf ein komplett neues Framework umzustellen bedeutet also, Unmengen vorhandenen (und bekannten) Code zu ersetzen.

 

Genau genommen ist BC bereits ein Framework smiley