Laravel PHP-Framework: Weg mit dem Spaghetti-Code!

Kein Beitragsbild

Sven Schannak

ist ein leidenschaftlicher Web-Entrepreneur, freiberuflicher Web-Entwickler und stolzer Coding-Monkey.

PHP-Frameworks gibt es wie Bäume im Wald und bei dem dichten Laubwerk kann man schnell die Übersicht verlieren. Laravel, das seit April 2011 entwickelt wird, will sein Alleinstellungsmerkmal in sauberem Code und tief integrierter Active-Record-Unterstützung finden.

Laravel

Laravel

Laravels Grundphilosophie

Sauberer Code? Das haben wir in der PHP-Umgebung schon öfter gehört. Die Frage, die dahinter steht: Ist das mit PHP überhaupt machbar?

Immerhin hat sich der Entwickler von Lavarel vorgenommen, das Framework in einem Stil zu entwerfen, der dem Prinzip für spätere Nutzer

“We are using Laravel. If it’s ugly, it’s not in the framework” (Wir benutzen Laravel. Ist es hässlich, liegt es nicht an unserem Framework.)

entspricht.  Umgesetzt wurde das unter anderem mit der Integration eines ORM (Object Relational Mapping). Dieses ist dafür da, schwierige und unansehnliche SQL-Konstrukte in einfache Programmzeilen zu verwandeln, was eine vereinfachte Datenmigration und -verwaltung ermöglicht.

MVC  (Model View Controller)  ist mittlerweile zu einem unverzichtbaren Pattern geworden und kommt auch in Laravel zum Einsatz. Hierbei wird das klassische MVC-Prinzip genutzt. In den Models stehen alle Daten zur Verknüpfung mit der Datenbank, wobei der auf Active-Records basierende “Fluent Query Builder” zum Erstellen einfacher und verketter SQL-Anfragen in PHP-Code genutzt werden kann. Auch reines SQL darf verwendet werden. Controller sind erst ziemlich spät zu Laravel dazu gekommen, augenscheinlich auch nur aus Gründen der Anwendbarkeit für Nutzer, die von anderen Frameworks auf Laravel umsteigen wollen. Laravel selbst setzt für kleinere Projekte eher darauf, die Logik im Routing-File zu integrieren. Da sind Controller durchaus die ansprechendere Lösung.

Das bereits angesprochene Routing ist für die “Weiterleitung” des Nutzers beim Aufrufen von Projekt-URLs gedacht. Es gibt zum Beispiel eine Art Event-Listener, der unter anderem auf 404-Fehler reagiert. Wichtiger sind aber das Leiten der Nutzeranfragen zur Logik und die daraus resultierende Auswertung. Die Auswertung erfolgt in letzter Instanz über die Views. Diese dienen dazu, eine wohlgeformte Antwort z.B. in HTML zu erstellen und dem Nutzer mit Hilfe der Daten aus Controller und Models bereit zu stellen.

Bundles in Laravel

Erweiterbarkeit ist natürlich eine grundlegende Vorraussetzung moderner Frameworks. Diese Erweiterungen werden in Laravel über Bundles eingebunden. Bundles können von einfachen Plugins bis zur komplizierten fertigen Anwendung alles sein. Im Prinzip funktionieren diese eigenständig und benötigen nur die grundlegenden Einstellungen aus der Hauptanwendung, z.B. für die Datenbank.

Kennst du unser E-Book-Bundle? Spare jetzt 6,99 €!

E-Book Bundle von Andreas Hecht

Ansonsten hat Laravel eigentlich alles an Bord, was für eine professionelle Entwicklung nötig ist. Formulare können einfach, aber sicher validiert werden. Dank Localization können Anwendungen in mehreren Sprachen angeboten werden. Zudem verfügt es über eine Encryption-Klasse, die eine 2-Wege-Encryption über AES-256  und Decryption via Mcrypt PHP bietet.

Unit-Tests sind durch die Integration der PHPUnit Testing Library ebenfalls möglich.

Sauberer Code in Laravel

Doch, wie war das noch mit dem sauberen Code? Schafft Laravel tatsächlich das Wunderwerk? Laravel ist zumindest sehr dicht dran, kann aber auf Grund von Problemen durch die Sprache PHP nicht vollends überzeugen. Features wie Eloquent ORM bringen den Nutzer aber automatisch dazu, übersichtlicheren Code zu schreiben. Schade finde ich persönlich nur, dass man den Entwicklern offen lässt, ob sie ihre Logik im Routing-File schreiben wollen oder als Controller. Ich hoffe aber, dass dies kaum zu Problemen führen wird. Vielleicht wäre ein Ansatz wie das Prinzip der Generic-Views z.B. aus Django ein konsensfähiger Kompromiss.

Im Endeffekt ist natürlich jeder selber für sauberen Code verantwortlich. Laravel bietet als Framework einen guten Ausgangspunkt, ist aber mit gerade mal 13 Monaten noch jung. Wichtig ist auch, wie sich die Community um Laravel, vor allem in Bezug auf Bundles entwickeln wird. Dort gibt es zwar schon gute Ansätze, so etwa ein Bundle für Doctrine. Es bleibt jedoch noch sehr viel Spielraum.

Fazit: Laravel ist ein Framework, das man als PHP-Entwickler testen und auf jeden Fall weiter beobachten sollte, dank eines guten Ansatzes und einer starken Dokumentation.

(dpe)

Sven Schannak

ist ein leidenschaftlicher Web-Entrepreneur, freiberuflicher Web-Entwickler und stolzer Coding-Monkey.

Sortiert nach:   neueste | älteste | beste Bewertung
Need_you
Gast

Danke für den Bericht. Ich hätte mir jedoch ein paar Code-Beispiele gewünscht.

FvG
Gast
Beispiele gibt es zum Beispiel auf getlaravel.com Ich selbst nutze seit einiger Zeit Laravel und bin damit mehr als zufrieden. Dass man es dem Entwickler überlässt selbst zu entscheiden, wo er seine Logik hinpackt ist alles andere als schade – viel mehr haben wir es hier mit einem Kern-Feature von Laravel zu tun. Das Routing-System von Laravel ist extrem stark und wenn man, wie ich zum Beispiel, von anderen Frameworks wie CodeIgniter oder Fuel kommt, benötigt man tatsächlich einen Augenblick zum Umdenken. Allerdings führt dieser Ansatz keinesfalls zu Problemen, viel mehr kann man entscheiden, was einem besser gefällt bzw. mehr… Read more »
Rob
Gast
Ein netter Beitrag der allerdings mit einem direkten Vergleich zu ähnlichen PHP-Frameworks und ein paar Beispielen etc. auch etwas ausführlicher hätte ausfallen können. Mir fehlt hier zum Beispiel auch die Erwähnung von Artisan als CMD-Tool sowie der Blade Template Engine welche ebenfalls nicht unerwähnt bleiben sollte! Mittels Artisan lassen sich Aufgaben wie Cronjobs oder auch ganze Unit testings bequem von außen anstoßen. Die Blade Template Engine bietet hingegen die Möglichkeit den Code sauber und strukturiert zu halten ohne die Ausführungszeit im großen Maße zu beeinträchtigen. Um sogenannte Blade Templatedateien zu definieren reicht es aus diese mit prefix “.blade.php” zu versehen.… Read more »
FvG
Gast
Gut, das hatte ich eigentlich auch nicht so verstanden, kam vielleicht falsch rüber :) Aber wie gesagt, schade ist der Ansatz auf keinen Fall. Ich habe mich ehrlich gesagt noch nie mit Django beschäftigt und konnte auf die Kürze nicht herausfinden was es damit auf sich hat :/ Artisan und Blade sind großartige Dinge, eine Erwähung wäre tatsächlich nicht schlecht! Und zum Vergleich würden sich vielleicht Litium und FuelPHP anbieten, ebenfalls recht neue Frameworks. Fuel habe ich selbst kurz ausprobiert, durch den Wechsel von Cartalyst (cartalyst.com) zu Laravel bin ich dann aber nach etwa 3 Wochen auf Laravel gekommen. Lithium… Read more »
wpDiscuz