© Yurii Andreichyn/Shutterstock.com
Laravel: ein PHP Framework (nicht nur) für coole Kids

Mehr Eleganz beim Programmieren


Bei Laravel [1] handelt es sich um ein typisches Open-Source-PHP-Framework, das dem MVC-Architekturmuster folgt. Seit der Veröffentlichung der ersten Version im Juni 2011 hat die Popularität stetig zugenommen. Spätestens mit Version 4.0, die seit Mai 2013 verfügbar ist, hat sich Laravel etabliert. Mit dieser Version ging auch die Umstellung auf eine Composer-basierte Installation und Paketverwaltung einher.

Seit jeher wird die Entwicklung von Laravel maßgeblich durch Taylor Otwell, dem Initiator und Maintaner des Projekts, vorangetrieben und geprägt. Während es gerade in der Anfangszeit noch des Öfteren selbst in Minor-Releases nichtabwärtskompatible Änderungen gab, hat sich die Situation mittlerweile deutlich entspannt. Die Dokumentation von Laravel enthält für jedes Release einen ausführlichen Upgrade-Guide mit einer Liste der relevanten Änderungen und möglichen Stolpersteine. Zudem wurde erstmalig im Juni 2015 eine Version mit Langzeitunterstützung veröffentlich. LTS-Versionen von Laravel werden für zwei Jahre nach Erscheinen mit Bugfixes und im Anschluss daran für ein weiteres Jahr mit Sicherheitsupdates versorgt.

Folglich ist gerade jetzt ein guter Zeitpunkt, um den Einsatz von Laravel als Framework für neue oder bestehende Projekte in Betracht zu ziehen. Abgesehen von der wichtigen Langzeitunterstützung ist es vor allem auch die Akzeptanz im professionellen Umfeld, die für einen Einsatz spricht. Zu den bekannten Anwendern von Laravel zählen unter anderem das Schnäppchenportal mydealz und der Onlineshop ABOUT YOU.

MVC 101

Laravel bietet als Full-Stack-Framework alle nötigen Funktionen, um professionelle Webapplikationen zu entwickeln. Mittels Composer ist ein neues Projekt auf Basis von Laravel schnell mit der folgenden Zeile eingerichtet: composer create-project --prefer-dist laravel/laravel mein-shop.

In den grundlegenden Funktionen weist Laravel viele Parallelen mit anderen Frameworks wie Symfony auf. So werden die einzelnen Seiten respektive HTTP Endpoints einer Webanwendung dem MVC-Entwurfsmuster entsprechend in Controller-Klassen zusammengefasst. Die URLs für den Zugriff darauf werden als sogenannte Routes definiert. Hierbei ist man nicht eingeschränkt und kann das URL-Schema frei gestalten. Verwendete Platzhalter können optional auf einen regulären Ausdruck geprüft werden oder dazu dienen, ein benötigtes Model automatisch aus der Datenbank zu laden und im Controller bereitzustellen:

// routes.php Route::get("orders/{order}/invoice.pdf", "OrdersController@getInvoicePdf"); // OrdersController.php public function getInvoicePdf(Order $order) { return response()->download($order->getInvoicePath(), "invoice.pdf"); // Das Model mit der im Platzhalter genutzten ID ist direkt in der // Controller-Methode verfügbar }

Ebenfalls lassen sich Routes speziell für einzelne oder alle Subdomains definieren. Gerade für SaaS-Anwendungen, bei denen jeder Mandant eine eigene Subdomain erhält, ist das durchaus praktisch. Das von einem Platzhalter erfasste Segment der Subdomain kann dabei als Parameter an die Controller-Methoden weitergereicht und dort verwendet werden.

Laravel unterstützt die Datenbanken MySQL, PostgreSQL, SQLite, SQL Server und den Key-Value-Store Redis. Für die Arbeit mit einer Datenbank bietet Laravel neben einem Query Builder, der das Erstellen sicherer, vor SQL Injections geschützter SQL-Abfragen vereinfacht, auch ein ORM namens Eloquent. Eloquent nutzt, anders als beispielsweise Doctrine, kein Data-Mapper-Pattern, sondern das Active-Record-Pattern. Während so ein unkomplizierter Einstieg in die Entwicklung möglich ist, sollte man sich bewusst sein, dass Active Record zumindest in Hinsicht auf die SOLID-Prinzipien ein Antipattern ist. Es werden verschiedene Zuständigkeiten – vor allem Domain-/Businesslogik und Persistenz – in einer Klasse vermischt, was nicht selten zu sogenannten Gottobjekten [2] führt.

Der Einsatz von Eloquent ist dementsprechend eine Geschmacksfrage und kann gerade bei komplexen Projekten problematisch sein. Während Laravel standardmäßig auf die Verwendung von Eloquent angepasst ist, spricht aber nichts dagegen, stattdessen ein anderes ORM einzusetzen oder die Datenbankabfragen direkt mittels Query Builder zu erstellen und in Repository-Klassen zu kapseln. Abseits vom reinen Datenbankzugriff bietet Laravel mit den Migration-Klassen eine leicht zugängliche Funktion zum Erstellen und Modifizieren des Datenbankschemas. Gerade für das automatisierte Testen und während der Entwicklung werden realistische Testdaten benötigt. Damit diese nicht jedes Mal ...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang