PHP, was ist Middleware?

(*-*)浩
Freigeben: 2023-02-24 11:38:01
Original
4555 Leute haben es durchsucht

Wie der Name schon sagt, fängt Middleware Anforderungsdaten ab und verarbeitet sie, überprüft Daten und bestimmt, ob der Zugriff auf die nächste Middleware nach der logischen Verarbeitung zwischen Anforderungen und Antworten zugelassen werden soll.

PHP, was ist Middleware?

Middleware ist in Präfix-Middleware und Post-Middleware unterteilt. Kann zur Berechtigungsauthentifizierung, Protokollierung usw. verwendet werden.

Middleware bietet einen praktischen Mechanismus zum Filtern von HTTP-Anfragen, die in die Anwendung eingehen. (Empfohlenes Lernen: PHP-Programmierung vom Anfänger bis zum Experten)

Laravel verfügt beispielsweise über eine integrierte Middleware zur Überprüfung der Benutzerauthentifizierung. Wenn der Benutzer nicht authentifiziert ist, leitet die Middleware den Benutzer zur Anmeldeschnittstelle weiter. Wenn der Benutzer jedoch authentifiziert ist, lässt die Middleware die Anfrage weiter in die Anwendung zu.

Natürlich kann neben der Identitätsauthentifizierung auch zusätzliche Middleware geschrieben werden, um verschiedene Aufgaben auszuführen.

Zum Beispiel: Die CORS-Middleware kann für das Hinzufügen geeigneter Header-Informationen zu allen Antworten verantwortlich sein, die die Anwendung verlassen. Die Protokollierungs-Middleware kann alle in der Anwendung eingehenden Anforderungen aufzeichnen.

Beispiel

<?php
// 框架核心应用层
$application = function($name) {
    echo "this is a {$name} application\n";
};
 
// 前置校验中间件
$auth = function($handler) {
    return function($name) use ($handler) {
        echo "{$name} need a auth middleware\n";
        return $handler($name);
    };
};
 
// 前置过滤中间件
$filter = function($handler) {
    return function($name) use ($handler) {
        echo "{$name} need a filter middleware\n";
        return $handler($name);
    };
};
 
// 后置日志中间件
$log = function($handler) {
    return function($name) use ($handler) {
        $return = $handler($name);
        echo "{$name} need a log middleware\n";
        return $return;
    };
};
 
// 中间件栈
$stack = [];
 
// 打包
function pack_middleware($handler, $stack)
{
    foreach (array_reverse($stack) as $key => $middleware) 
    {
        $handler = $middleware($handler);
    }
    return $handler;
}
 
// 注册中间件
// 这里用的都是全局中间件,实际应用时还可以为指定路由注册局部中间件
$stack[&#39;log&#39;] = $log;
$stack[&#39;filter&#39;] = $filter;
$stack[&#39;auth&#39;] = $auth;
 
$run = pack_middleware($application, $stack);
$run(&#39;Laravle&#39;);
Nach dem Login kopieren

Ausgabe:

Laravle need a filter middleware
Laravle need a auth middleware
this is a Laravle application
Laravle need a log middleware
Nach dem Login kopieren

Packager

Die Ausführungsreihenfolge der Middleware ist gegeben durch Die Verpackungsfunktion (pack_middleware) bestimmt, dass der hier zurückgegebene Verschluss tatsächlich äquivalent ist zu:

$run = $log($filter($auth($application)));
$run(&#39;Laravle&#39;);
Nach dem Login kopieren

Schreibspezifikationen

Middleware muss bestimmte Spezifikationen erfüllen: Geben Sie immer einen Verschluss zurück, der Im Abschluss werden immer die gleichen Parameter übergeben (bestimmt durch die Hauptlogik), und der Abschluss gibt immer das Ausführungsergebnis des Handlers zurück.

Wenn die Logik der Middleware das Handle zurückgibt, geben Sie $ zurück, wenn es zuvor abgeschlossen wurde handler($name) handelt es sich um Pre-Middleware, andernfalls um Post-Middleware.

Das obige ist der detaillierte Inhalt vonPHP, was ist Middleware?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage