info@a-coding-project.de

Laravel Tutorial: 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?

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.

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.

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 Artikel lesen

Middleware

Zum Definieren, was vor oder nach einem Seitenaufruf passiert. Dazu zählt zum Beispiel die Authentifizierung Artikel lesen

Controller

Bringen View und Model zusammen Artikel lesen

Request

Bietet alle Informationen der Anfrage (Parameter, Url,...) Artikel lesen

Responses

Unter anderem zum Setzen von HTTP-Headern

Session

Sessions lassen sich über Dateien, Cookies, Datenbank oder auch memcach / redis realisieren. Artikel lesen

Validation

Einfach, mit vielen Möglichkeiten Artikel lesen

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 Artikel lesen

CSRF Protection

Über Tokens wird verhindert, dass XSS-Attacken ausgeführt werden können. Artikel lesen

Encryption

Verschlüsseln & Entschlüsseln über OpenSSL und AES-256-CBC

Hashing

basierend auf Bcrypt

Validation

Validierung von Eingaben Artikel lesen

Allgemeine Themen

Cache

über die Datenbank, memcached oder Redis

Events

Ganz gut, um die einzelnen Module unabhängiger voneinander zu machen. Artikel lesen

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

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.

Relationships

Sehr schöne Möglichkeit Models miteinander zu verknüpfen Artikel lesen

Collections

Bietet verschiedene Funktionen zum Bearbeiten mehrerer Models Artikel lesen

Mutators

Zum Bearbeiten von einzelnen Eigenschaften beim Lesen / Speichern

Serialzation

Arrays oder JSON

Artisan Konsole

Befehle

Liste der wichtigsten Artisan-Befehle Artikel lesen

Task Scheduler

Crons mit Laravel nutzen Artikel lesen

Testverfahren

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)

Dusk

Test-System für den Frontend-Bereich

Envoy

Deployment-System für Laravel

Horizon

Monitoring-System für Laravel

Passport

Scout

Socialite

OAuth-Authentifizieierung (Facebook, Twitter, Google,...)

Telescope

Weitere Themen