Softwareentwicklung und Managed Hosting
ANEXIA
JAN
9
2015

Eine Übersicht über das Laravel-Framework

Geschrieben am  9. Januar 2015 von Harald Nezbeda

PHP That Doesn’t Hurt. Code Happy & Enjoy The Fresh Air.”

Die Webseite von Laravel verspricht PHP, das nicht weh tut, und um ehrlich zu sein hält es dieses Versprechen auch.

Das Framework ist nach dem MVC-Entwurfsmuster strukturiert (wenn du also schon einmal ein PHP Framework benutzt hast, wirst du dich schnell damit zurechtfinden) und in mehrere Komponenten aufgeteilt.

Was die Systemvoraussetzungen anbelangt, ist hierfür mindestens PHP 5.4 mitsamt der MCrypt PHP-Erweiterung notwendig.

Die Installation ist einfach gehalten und nutzt composer zur Abhängigkeitsverwaltung.

composer create-project laravel/laravel your-project-name

Danach kann man auch schon loslegen. Du musst nur sicherstellen, dass der Document-Root deines Webservers auf den public Ordner des Frameworks zeigt. Persönlich würde ich aber während der Entwicklungsphase eine Installation via homestead empfehlen.

Sehen wir uns jetzt also einige Schmankerl an, die uns Laravel anbietet.

  1. Dokumentation

Mit diesem Punkt muss ich beginnen, da eine gute Dokumentation den Grundstein für eine gute und leicht zu wartende Software legt – wie die meisten sagen: “Dokumentation ist dein Freund”. So gut eine Software – im speziellen ein Framework – auch ist, niemand kann es nutzten solange es nicht ausreichend dokumentiert ist, oder seltsame “Magic” im Hintergrund abläuft.

Glücklicherweise ist Laravel sehr gut dokumentiert, und man findet alles was man braucht auf laravel.com/docs.

  1. Routing

Dies ist einer der Teile des Frameworks, die mir schnell ins Auge gesprungen sind. Routen werden in Laravel in der Datei app/routes.php definiert. Dabei können die Routen sehr einfach, wie beispielsweise ein statischer Pfad, oder auch komplexer, wie beispielsweise eine Regular-Expression inkl. Parameter, sein. Außerdem können mit Hilfe der integrierten Übersetzungsfunktionen von Laravel die Routen auch lokalisiert werden.

So sieht dann eine einfache Routendefinition aus, die im PollsController die loadPolls-Action aufruft:

Route::get('/polls', 'PollsController@loadPolls');

Möchte man den Pfad lokalisieren, so gibt man zuerst der Routendefinition einen Namen (zum Beispiel Polls) über den die Route später referenziert werden kann – etwas was sich im Übrigen immer empfiehlt. Den Pfad lädt man sich dann einfach aus den Übersetzungsdateien mit Hilfe der Lang::get-Methode.

Route::get(Lang::get('urls.polls'),
    array(
        'as'=>'Polls',
        'uses' =>'PollsController@loadPolls'
    )
);
  1. Blade Templates

Blade ist eine eigens von den Laravel-Entwicklern erstellte Template-Engine. Diese zeichnet sich durch eine einfach zu lesende Syntax, sowie durch eine Vererbungsstruktur mittels Basis-Template und Sektionen aus. Ein Basis-Template definiert dabei Sektionen, die von den davon erbenden Child-Templates überschrieben und erweitert werden können. Die Vererbungstiefe kann dabei beliebig groß sein.

Um die Blade-Template-Syntax zu nutzen musst du die Views einfach nach dem Schema name.blade.php benennen.

@extends('base')
@section('heading')
	<h1>{{{ Lang::get('poll.list_of_polls') }}}</h1>
@stop
@section('content')
	<ul>
		@foreach ($polls as $poll)
			<li>
				<a href="{{{ route('poll_detail', array( 'id' => $poll->id, )) }}}">
					{{{$poll->question}}}
				</a>
			</li>
		@endforeach
	</ul>
@stop
  1. Formulare und Makros

Über den Form-Builder werden Formulare innerhalb der Views, also zum Beispiel innerhalb eines Blade-Templates, erstellt. Über eine einfache API kannst du den notwendigen HTML-Code des Formulars dynamisch generieren lassen. Das Befüllen der Felder mit bestehenden Daten, sowie das notwendige Escaping der Werte (um Cross-Site-Scripting-Attacken zu verhindern) wird dabei von Laravel übernommen. Außerdem bieten so erstellte Formulare einen Cross-Site-Reference-Forgery-Schutz. Über Makros können auch eigene Formulare-Elemente erstellt und genutzt werden.

Der Hauptvorteil der Laravel-Formular-Helfer ist aber die anschließende Validierung der Daten. Mit Hilfe von sehr wenig Code lassen sich vom Benutzer eingegebene Daten auf Gültigkeit überprüfen, und gegebenenfalls passende Fehlermeldungen ausgeben.

  1. Schema-Builder, Migrationen und Eloquent

Der Schema-Builder und das Eloquent ORM helfen dir, die Verbindung zwischen deiner PHP-Anwendung und der Datenbank herzustellen. Dabei wird es im Regelfall nicht notwendig sein, selbst SQL-Statements zu schreiben, da diese von Laravel anhand der passenden ORM-Funktionen erstellt wird. Dadurch ist die resultierende PHP-Anwendung nur sehr lose an das unterliegende Datenbankmanagementsystem gekoppelt – MySQL kann so also ohne Code-Anpassungen beispielsweise durch PostgreSQL ersetzt werden.

Mit Hilfe der Migrationen können Datenbankschema-Anpassungen gemacht werden, wie zum Beispiel das Erstellen von Tabellen und Spalten.

Schema::create('polls', function($table)
{
    $table->engine = 'InnoDB';
    $table->increments('id');
    $table->string('question');
    $table->timestamps();
    $table->softDeletes();
});
  1. Artisan-Befehle

Mit Artisan erschließt Laravel das mächtige Feld der Konsolenbefehle. Diese laufen innerhalb des Framework Context, so dass auf alle Funktionen – wie zum Beispiel dem ORM – zugegriffen werden kann. So kommt Laravel auch schon selbst mit einigen Befehlen daher, mit deren Hilfe die Webseite beispielsweise in den Wartungsmodus geschalten werden kann. Selbstverständlich kann man auch eigene Artisan-Befehle erstellen, mit denen man sich das Entwicklerleben deutlich leichter machen kann.

  1. Großartige Community

Dokumentation ist wichtig, aber nicht alles. Häufig sind reale Personen, mit denen man gewisse Problematiken besprechen kann, um so gemeinsam lösungsorientiert nach Ansätzen zu suchen, damit das Problem effektiv gelöst werden kann. Auf laravel.io findet man eine große und hilfreiche Community. Außerdem gibt es dort zahlreiche Laravel-Podcasts, Live-Chats und vieles mehr.