Heim  >  Artikel  >  PHP-Framework  >  Das grundlegende Funktionsprinzip der Middleware im Pipeline-Entwurfsmuster im Laravel-Framework

Das grundlegende Funktionsprinzip der Middleware im Pipeline-Entwurfsmuster im Laravel-Framework

不言
不言Original
2018-07-31 10:07:593460Durchsuche

Das Pipeline-Designmuster im Laravel-Framework besteht darin, dass die Daten zur Verarbeitung an die Pipeline übertragen und dann an den nächsten Schritt übergeben werden. Schauen wir uns als Nächstes das Pipeline-Design im an Laravel Framework Das grundlegende Funktionsprinzip der Muster-Middleware.

Das sogenannte Pipeline-Entwurfsmuster besteht darin, Daten an eine Tasksequenz zu übergeben. Die Pipeline übernimmt die Rolle des Fließbandes, wo die Daten verarbeitet und dann an den nächsten Schritt übergeben werden.

Die Verwendung von Pipelines bietet viele Vorteile, insbesondere wenn wir komplexen Verarbeitungscode in einer einzigen Aufgabe schreiben. Pipelines bieten uns großen Komfort und Phasenaufgaben können einfach in der Pipeline hinzugefügt, entfernt oder ersetzt werden.

Laravel verwendet das Pipeline-Entwurfsmuster an vielen Stellen im Framework, was bedeutet, dass alle Stellen, an denen wir das Pipeline-Entwurfsmuster implementieren müssen, bereits Teil der zugrunde liegenden Anwendung sind.

Wir können mithilfe der internen Komponenten von Laravel unsere eigene Funktionalität auf dem Framework aufbauen. Im heutigen Tutorial besprechen wir das Pipeline-Entwurfsmuster und die Verwendung der internen Pipelines von Laravel.

Was ist das Pipeline-Entwurfsmuster?

Pipeline-Muster werden verwendet, um komplexe Prozesse in mehrere unabhängige Teilaufgaben zu zerlegen. Jede unabhängige Aufgabe ist wiederverwendbar, sodass diese Aufgaben zu komplexen Prozessen kombiniert werden können.

In diesem Modus können Sie einen großen Prozess in kleinere Unteraufgaben aufteilen, die die Daten verarbeiten und die verarbeiteten Ergebnisse an die nächste Unteraufgabe weitergeben. Es ist wie ein Fließband ordentlich und vollständig, von der Rohstoffverarbeitung bis zum fertigen Produkt.

Jede Aufgabe in der Pipeline akzeptiert und gibt denselben Datentyp zurück, sodass Unteraufgaben in der Pipeline hinzugefügt, entfernt oder ersetzt werden können, ohne dass sich dies auf andere Unteraufgaben auswirkt.

Wenn Sie mit Unix-Systemen vertraut sind, sind Sie möglicherweise mit Pipes vertraut, da wir häufig Pipe-Befehle in Shell-Befehlen verwenden, zum Beispiel:

cat helloworld.txt | grep "hello world" | rev | > output.txt

In diesem Beispiel lesen wir Dateiinhalte und Fragen Sie es nach der Zeichenfolge „Hallo Welt“ ab, kehren Sie die Zeichenfolge um und fügen Sie sie schließlich der Datei „output.txt“ hinzu.

Wie verwende ich den Pipeline-Modus in Laravel?

Laravel verwendet das Pipeline-Entwurfsmuster an vielen Stellen im Framework, am häufigsten ist die Implementierung von Middleware.

Wenn die Anfrage schließlich die Controller-Aktion erreicht und verarbeitet wird, durchläuft sie zunächst eine Reihe von Middleware. Jeder Vermittler hat eine unabhängige Verantwortung, z. B. das Setzen von Cookies, das Festlegen, ob eine Anmeldung erfolgen soll, das Verhindern von CSRF-Angriffen usw.

Die Anfrage wird in jeder Phase verarbeitet. Wenn die Anfrage erfolgreich ist, wird sie an die nächste Verarbeitung weitergeleitet. Wenn sie fehlschlägt, wird die entsprechende HTTP-Antwort zurückgegeben.

Dieser Mechanismus macht es uns einfach, Verarbeitungsvorgänge hinzuzufügen, bevor die Anfrage schließlich den Anwendungscode erreicht. Wenn dieser Verarbeitungsvorgang nicht benötigt wird, können Sie ihn natürlich auch jederzeit entfernen, ohne den Lebenszyklus zu beeinträchtigen der Anfrage.

Vorteile des Pipeline-Modus

Der Pipeline-Modus hat viele Vorteile:

Erstens zerlegt er komplexe Verarbeitungsabläufe in unabhängige Teilaufgaben, was ihn praktisch macht Testen Sie jede Unteraufgabe.

Zweitens können die zerlegten Unteraufgaben von verschiedenen Verarbeitungsprozessen wiederverwendet werden, um Coderedundanz zu vermeiden.

Schließlich ist das Hinzufügen, Entfernen und Ersetzen von Teilaufgaben in komplexen Prozessen sehr einfach, ohne Auswirkungen auf bestehende Prozesse.

Nachteile des Pipeline-Modus

Natürlich hat der Pipeline-Modus auch Nachteile:

Obwohl jede Unteraufgabe einfacher wird, wenn Sie es versuchen Auch hier besteht ein gewisser Grad an Komplexität, wenn diese Teilaufgaben zu einem vollständigen Prozess zusammengefasst werden.

Darüber hinaus muss sichergestellt werden, dass der Gesamtprozess nach dem Bestehen der unabhängigen Teilaufgabentests normal funktionieren kann Grad der Unsicherheit.

Wenn man schließlich nur eine Unteraufgabe sieht, ist es schwierig, den Gesamtprozess zu verstehen (die Geschichte vom Blinden und dem Elefanten muss jedem bekannt sein, und das ist der Grund).

So verwenden Sie die Pipeline von Laravel

Die Verwendung der von Laravel bereitgestellten Pipeline ist sehr einfach. Zuerst müssen Sie ein neues IlluminatePipelinePipeline-Objekt erstellen und es in eine Instanz von einfügen IlluminateContractsContainerContainer :

$pipeline = app('Illuminate\Pipeline\Pipeline');

Als nächstes senden Sie das Objekt, das Sie an diese Pipe übergeben möchten:

$pipeline->send($request);

Dann übergeben Sie es an das Task-Array, das die Anfrage akzeptiert und verarbeitet:

$pipeline->through($middleware);

Zum Schluss Führen Sie Pipeline-Aufgaben aus und schreiben Sie die Rückrufverarbeitung:

$pipeline->then(function ($request) {
    // Do something
});

Dies ist das grundlegende Arbeitsprinzip der Middleware: HTTP-Anforderungen empfangen, die Anforderungen durch die definierte Routing-Middleware laufen lassen und schließlich das Ziel zur Verarbeitung erreichen.

Fazit

Das Pipeline-Designmuster ist nur ein besonderes Beispiel, das dieses Designmuster im zugrunde liegenden Framework voll ausnutzt. Sie können die von Laravel bereitgestellte Pipeline auch in Ihrem eigenen Projekt verwenden.

Das Obige ist der gesamte Inhalt dieses Artikels. Weitere Informationen finden Sie im Laravel-Tutorial!

Empfohlene verwandte Artikel:

Einrichtung der Laravel-Umgebung: Schritte zur Bereitstellung von Laravel in Alibaba Cloud oder Tencent Cloud

Verwandte Kursempfehlungen:

Die neuesten fünf Laravel-Videos in Tutorial-Empfehlung 2017

Das obige ist der detaillierte Inhalt vonDas grundlegende Funktionsprinzip der Middleware im Pipeline-Entwurfsmuster im Laravel-Framework. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn