Laravel

Erstes Projekt mit Laravel

Ich habe mich in der letzten Zeit damit beschäftigt ein für mich neues PHP-Framework zu lernen. Laravel ist mittlerweile das am weitesten verbreitete PHP-Framwork und basiert auf dem MVC-Muster. Es wurde 2011 von Taylor Otwell initiert.

Suchanfragen für Laravel

Die folgende Grafik zeigt die Nachfrage und deren Entwicklung laut Google Trends zu den entsprechenden Frameworks:

Google Trends PHP Frameworks

Damit löste Laravel ungefähr 2014 das Zend Framework als beliebtestes Framework ab und steigert seit dem konstant seine Verbreitung in der Community. Ich möchte im folgenden näher auf das Framework eingehen und versuche zu erklären, warum Laravel so beliebt ist.

Mein erstes Projekt mit Laravel

Ich habe nun Zeit gefunden ein erstes Projekt mit Laravel zu realisieren und arbeite bereits am zweiten, da mein Eindruck durchweg positiv ist. Eine saubere Dokumentation und viele sehr gute Tutorials, unter anderem von laracasts, helfen beim Einstieg.

Laravel bietet von Haus aus sehr viele Funktionen, die das Framework an sich aber nicht komplex wirken lassen oder unnötig aufblähen. Composer wird als Dependency-Manager eingesetzt. Zu den Konzepten von Laravel gehören unter anderem folgende Punkte:

HTTP-Ebene

  • Routing: Hier wir festgelegt welche Aktion beim Aufruf einer bestimmten URL ausgeführt wird
  • Controllers: Verbinden Model und View und definieren die Geschäftslogik
  • Requests / Responses: Austausch von Informationen zwischen Server und Client

Frontend

  • Views: Basieren auf eigener Template-Engine (Blade)
  • Elixir: Bereitstellung von GULP-Tasks zum Umgang mit CSS und JavaScript
  • Localization: Unterstützung von Mehrsprachigkeit

Sicherheit

  • Authentication und Authorization: Eigene Mechanismen für Anmeldung und Bereichtigungen
  • CSRF Protection: Absicherung durch Tokens vor XSS-Attacken
  • Encryption: Verschlüsselung über OpenSSL
  • Hashing: basierend auf Bcrypt

Allgemeines

  • Cache: Verschiedene integrierte Mechanismen zum Caching (Redis,  memcached, Datenbank)
  • Events: Unterstützung von Events zur Abkapselung von verschiedenen Models / Funktionen
  • File Storage: Arbeitet mit dem lokalen Dateisystem, aber auch mit Amazon S3 und Rackspace
  • Notifications: Unterstützung diverser Kanäle für den Versand von Benachrichtigungen
  • Queues: Unterstützung von Warteschlangen zum Abarbeiten längerer / größerer Aufgaben im Hintergrund

Datenbanken

  • Query Builder: Datenbankabfragen ohne direktes SQL formulieren zu müssen durch Bereitstellung von Models und Funkionen (Eloquent)
  • Migrations: Datenbankstruktur können über Dateien definiert und versioniert werden
  • Seeding: Datensätze können direkt über Dateien verwaltet und eingefügt werden

Eloquent ORM

  • Relationships: Sehr schöne Möglichkeit Models miteinander zu verknüpfen
  • Collections: Bietet verschiedene Funktionen zum Bearbeiten mehrerer Models
  • Mutators: Zum Bearbeiten von einzelnen Eigenschaften beim Lesen / Speichern
  • Serialzation: Arrays oder JSON

Artisan Konsole

  • Befehle: Zum Generieren von Code oder zum Testing (Erstellung von Klassen oder Funktionen)
  • Task Scheduling: Unterstützung von Cronjobs für wiederkehrende Aufgaben