Erstellen einer einfachen Middleware -Klasse

Erstellen einer einfachen Middleware -Klasse

Problem

Sie möchten Ihrer Anwendung Middleware hinzufügen, wissen aber nicht, wo Sie anfangen sollen.

Lösung

Erstellen Sie eine einfache Middleware -Klasse.

Schritt 1 - Erstellen Sie die Klasse

Verwenden Sie Symfony \ component \ httpfoundation \ request;
Verwenden Sie Symfony \ component \ httpfoundation \ response;
Verwenden Sie Symfony \ component \ httpkernel \ httpkernelinterface;
Klasse Middleware implementiert httpkernelinterface
geschützte $ App;
/**
* Konstrukteur
*/
öffentliche Funktion __construct (httpkernelinterface $ App)

$ this-> app = $ App;

/**
* Behandeln Sie die Anfrage und senden Sie die Antwort zurück
*
* @Implements httpkernelinterface :: Handle
*
* @param \ symfony \ component \ httpfoundation \ request $ request
* @param int $ type
* @param bool $ catch
* @return \ symfony \ component \ httpfoundation \ response
*/
öffentliche Funktion Handle (Anfrage $ Anfrage,
$ type = httpkernelinterface :: Master_Request, $ catch = true)

// 1) Bei Bedarf eingehende Anforderungen ändern

// 2) Ketten Sie den App -Handler an, um die Antwort zu erhalten
$ response = $ this-> App-> Handle ($ request, $ type, $ catch);
// 3) die Antwort bei Bedarf ändern

// 4) die Antwort zurückgeben
$ response return;


?>

Schritt 2 - Registrieren Sie die Middleware -Klasse

Sie müssen dies in der Register () -Methode eines Dienstanbieters tun.

App :: Middleware ('MyApp \ Middleware');

Alternativ können Sie ein einfaches Paket installieren, das Sie erstellt haben, mit dem Sie Ihre Middleware registrieren können App/Start/Vorboot.Php. Weitere Informationen finden Sie unter Laravel-Hooks.

Diskussion

Die obige Klasse tut nichts.

Aber es ist ein gutes Skelett zunächst. Offensichtlich müssen Sie den Namespace und den Klassennamen für Ihre Anwendung ändern.

Dann möchten Sie vielleicht versuchen, etwas zu protokollieren, um sicherzustellen, dass es funktioniert. Sie können die Handle () -Methode Ihrer Klasse wie unten angegeben aktualisieren.

// in Schritt 1) ​​bei Bedarf eingehende Anforderungen ändern
// Anmelden bei einer Datei anmelden. Da App/Start/Global.PHP wurde nicht getroffen
// Die Protokollfassade ist jedoch noch nicht auf eine Datei eingestellt. Also nur
// direkt in eine Datei schreiben.
$ logfile = storate_path ().'/logs/laravel.Protokoll';
ERROR_LOG ("Middleware -Eintrag \ n", 3, $ logfile);
// in Schritt 3) die Reaktion bei Bedarf ändern
// Anmelden bei einer Datei anmelden. Wir sind sicher, die Protokollfassade jetzt zu verwenden
// Es sollte in App/Start/Global eingerichtet werden.Php
LOG :: Info ("Middleware Exit");

Jetzt können Sie Ihre untersuchen App/Speicher/Protokolle/Laravel.Protokoll Datei, um festzustellen, dass Ihre Middleware funktioniert.