Routing

Die Aufgabe des Routing ist es, eine Anfrage auf den entsprechenden Controller oder Closure-Funktion abzubilden. Dabei wird die URL der Anfrage mithilife von mehrerer Routing-Regeln analysiert. Wird eine Route als passend identifiziert, werden die ermittelten Angaben zu Controller, Action und weitere Parameter in einem Objekt gespeichert und weiter verarbeitet.

Die Routes befinden sich dabei in einem eigenen Verzeichnis (routes/) und wird dabei auf die folgenden Dateien aufgeteilt: routes/api.php, routes/channel.php, routes/console.php und routes/web.php.

Grundlagen

Die simpelste Variante einer Route benötigt eine URI, sowie eine Closure Funktion um eine Anfrage verarbeiten zu können:

Route::get('foo', function () {
    return 'Hello World';
});

Standard-Route-Dateien

API-Routes

Routes welche für die Programmierungsschnittstelle (API) benötigt werden können in der routes/api.php definiert werden. Diese Routes sind dabei Zustandslos und werden mithilfe der api middleware Gruppe verarbeitet.

<?php

use Illuminate\Http\Request;

Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});

Broadcasting-Kanäle

Innerhalb der routes/channels.php Datei werden alle Event basierten Kanäle (Broadcasting Channels) des Basissystems definiert. Um nun bspw. eine Aktion auszuführen, muss die Callback Funktion aufgerufen werden. Sobald diese Callback Funktion den Wert Wahr (true) zurückliefert, darf die entsprechende Aktion ausgeführt werden.

<?php

Broadcast::channel('App.User.{id}', function ($user, $id) {
    return (int) $user->id === (int) $id;
});

Falls Du jetzt schon in das Broadcasting eintauchen möchtest (was ich nicht empfehle), solltest Du Dir ein Video, von Taylor Otwell, dem Gründer des Laravel PHP Framework: https://laracasts.com/lessons/broadcasting-events-in-laravel-5-1.

Konsole-Routes

In der routes/console.php Datei kannst Du mithilfe einer Closure Funktion Deine eigenen Artisan Kommandos definieren. Jeder dieser Closure Funktionen ist dabei an eine command Instanz gebunden welche Dir die Funktionen bereitstellt um ein eigenes Artisan Kommando zu generieren:

<?php

Artisan::command('inspire', function () {
    $this->comment(
        'Das Leben ist wie eine Schachtel Pralinen, man weiss nie, was man bekommt.'
    );
})->describe('Display an inspiring quote');

Web-Routes

Bei den meisten Projekten beginnst Du das definiereren von Routes wahrscheinlich mit der routes/web.php Datei. Diese Datei beinhaltet alle öffentlichen Routes welche Du bspw. mithilfe Deines Browser aufrufen kannst.

Route::get('/', function () {
    return 'Hello World';
});

Router-Methoden

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);