0251 / 590 644 - 0
info@a-coding-project.de

Laravel: Das bietet das PHP-Framework

Laravel ist noch ein recht junges PHP-Framework (MVC), was sich relativ schnell eine gute Community aufgebaut hat. Doch wieso ist das so?

  • Der Einstieg ist leicht
  • Es nutzt die neusten Techniken
  • Auf Sicherheit wird sehr viel wert gelegt
  • Mit Laravel kann man dynamische Anwendungen sehr schnell entwickeln

Leichter Einstieg - Einfache Handhabung

Die Einfachheit ist oftmals ein entscheidender Erfolgsfaktor in der Entwicklung. So sind Projekte wie PHP oder auch WordPress groß geworden.

Obwohl es in Laravel zahlreiche Funktionen und Möglichkeiten gibt, kann man zum Start auch mit recht einfachen Mitteln zurechtkommen. Nach und nach kann man sich dann immer tiefer ins Framework einarbeiten.

Blade - Template Engine

Mit der Template-Engine von Laravel ist es möglich, in einer View mehrere Abschnitte zu definieren. So kann man zum Beispiel in einer View den <head> erweitern und gleichzeitig den Inhalt definieren. Das sieht dann so aus:

@extends('layout.base')
@section('content')
<p>Lorem Ipsum</p>
@endsection

@section('extend-head')
<link rel="stylesheet" href="/css/view.css" />
@endsection

Das dazugehörige Eltern-Template:

<!DOCTYPE html>
<html>
	<head>
		@yield('extend-head')
	</head>
	<body>
		@yield('content')
	</body>
</html>

Migrations: Datenbankänderungen

Alle Datenbanken auf einem Stand zu halten kann ab und an mal Probleme machen. Gerade bei größeren Updates, kann es passieren, dass Änderungen in der Datenbank vergessen werden. Um das zu verhindern gibt es in vielen Projekten eine Liste mit SQL-Queries, die beim Upload ausgeführt werden müssen.

Laravel bietet hier eine bessere Lösung: Über Migrations können Änderungen im Schema der Datenbank festgehalten und auf eine einfache Weise eingespielt werden. So werden über einen Befehl die Änderungen ausgeführt, die auf dem Server noch fehlen. So vergisst man nichts mehr. Sollte dann doch noch etwas schief gehen, kann man über ein Rollback schnell die alte Version wiederherstellen.

Routing

Das Routing entscheidet, welche Aktion bei welcher Url ausgeführt wird. So kann man im einfachsten Fall einfach eine View anzeigen. Dabei lassen sich unter anderem für GET und POST verschiedene Aktionen zuweisen. Auch Variablen in der Url lassen sich einfach nutzen: Sie werden dann zum Beispiel automatisch als Parameter in einer Methode übergeben.

Natürlich ist es auch möglich komplexere Routing-Regeln festzulegen. Dafür lassen sich reguläre Ausdrücke einsetzen.

Eloquent ORM - Datenbank ohne SQL

Einer meiner Lieblingsfunktionen von Laravel ist das Eloquent ORM. Dadurch können die Models ohne das Schreiben von SQL-Queries ausgelesen, bearbeitet oder gelöscht werden. Durch Relationen lassen sich die Beziehungen zwischen den einzelnen Models wunderbar abbilden. Sollten an einigen Stellen doch einmal komplexere Anfragen notwendig sein, bringt der Query Builder hierzu alle Möglichkeiten mit. Damit werden die Abfragen deutlich besser lesbar und lassen sich auch von der Struktur her leichter zusammenbauen.

Laravel Elixir

Im Bereich Frontend-Entwicklung ist SASS fast nicht mehr weg zu denken. Dadurch lässt sich CSS deutlich besser strukturieren.

Laravel bietet grundlegende GULP-Tasks zum Umgang mit CSS und JavaScript. Dazu gehören neben SASS auch CoffeeScript, Browserfy oder Babel.

Alle Laravel-Funktionen im Überblick

Kernkonzepte

  • Service Container: Verwalten die Abhängigkeiten der einzelnen Klassen
  • Service Providers: Registrierung von verschiedenen Dingen, wie Middleware, Event Listener oder auch Routen
  • Facades: Öffentliche Schnittstellen zu verschiedenen Funktionen
  • Contracts: Als Contracts werden die Interfaces bezeichnet, mit denen man Laravel erweitern kann.

HTTP-Ebene

  • Routing: Definiert, welche Url welche Aktion ausführt
  • Middleware: Zum Definieren, was vor oder nach einem Seitenaufruf passiert. Dazu zählt zum Beispiel die Authentifizierung
  • Controllers: Bringen View und Model zusammen
  • Requests: Bietet alle Informationen der Anfrage (Parameter, Url,...)
  • Responses: Unter anderem zum Setzen von HTTP-Headern
  • Session: Sessions lassen sich über Dateien, Cookies, Datenbank oder auch memcach / redis realisieren.
  • Validation: Einfach, mit vielen Möglichkeiten

Frontend

  • Views: Mit einfacher Datenübergabe als Array
  • Blade Templates: Zur Strukturierung von verschiedenen Views
  • Compiling Assets: Less, Sass, Stylus, Plain CSS, Webpack, Rollup, ... (Elixir)
  • Localization: Übersetzungen (PHP-Array, nicht Gettext)

Sicherheit

  • Authentication: Login-System
  • Authorization: Berechtigungs-System
  • CSRF Protection: Über Tokens wird verhindert, dass XSS-Attacken ausgeführt werden können.
  • Encryption: Verschlüsseln & Entschlüsseln über OpenSSL und AES-256-CBC
  • Hashing: basierend auf Bcrypt

Allgemeine Themen

  • Cache: über die Datenbank, memcached oder Redis
  • Events: Ganz gut, um die einzelnen Module unabhängiger voneinander zu machen.
  • File Storage: Arbeitet mit dem lokalen Dateisystem, aber auch mit Amazon S3 und Rackspace
  • Mail: Mails können dabei eigene Views haben
  • Notifications: Versand von Benachrichtigungen per Mail, SMS, Slack,...
  • Queues: Aufgaben verzögert ausführen

Datenbanken

  • Query Builder: Datenbankabfragen ohne das Schreiben von SQL
  • Pagination: Sehr einfache Möglichkeit um Paginierungen herzustellen
  • Migrations: Datenbankänderungen dokumentieren und ausführen
  • Seeding: Zum Erstellen von Beispieldatensätzen (beim Aufsetzen von neuen Servern sinnvoll)
  • Redis: Interaktion mit Redis

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 Beispiel zum Generieren von Klassen oder durchführen von Migrations
  • Task Scheduling: Crons mit Laravel nutzen

Test-Verfahren

  • Application Testing: Testmöglichkeiten von verschieden Routen. Unterstützung von PHPUnit
  • Database: Testen, ob Datenbankänderungen erfolgreich durchgeführt wurden
  • Mocking: Zum Definieren von Tests, bevor dessen Funktion überhaupt existiert.

Offizielle Pakete

  • Cashier: Bezahl-Funktionen (Stripe / Braintree)
  • Envoy: Deployment-System für Laravel
  • Socialite: OAuth-Authentifizieierung (Facebook, Twitter, Google,...)

Sie möchten Laravel für ihr Projekt nutzen? Schauen Sie doch in unser Laravel Angebot.