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);