Heim >Backend-Entwicklung >PHP-Problem >Was ist PHP-Middleware?

Was ist PHP-Middleware?

(*-*)浩
(*-*)浩Original
2019-09-06 14:23:535049Durchsuche

Was ist PHP-Middleware?

PHP-Middleware ist ein Abschluss und gibt einen Abschluss zurück.

Middleware bietet einen praktischen Mechanismus zum Filtern von HTTP-Anfragen, die in die Anwendung eingehen, und kann in Pre-Middleware und Post-Middleware unterteilt werden. Wird häufig verwendet, um zu überprüfen, ob der Benutzer authentifiziert ist, Antwortheader hinzuzufügen (domänenübergreifend), Anforderungsprotokolle aufzuzeichnen usw. (Empfohlenes Lernen: PHP-Programmierung vom Einstieg bis zur Beherrschung)

Was ist PHP-Middleware?

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

Ausgabe :

Laravle need a filter middleware
Laravle need a auth middleware
this is a Laravle application
Laravle need a log middleware

Verpackungsprogramm

Die Ausführungsreihenfolge der Middleware wird durch die Verpackungsfunktion (pack_middleware) bestimmt. Der hier zurückgegebene Verschluss entspricht tatsächlich:

$run = $log($filter($auth($application)));
$run(&#39;Laravle&#39;);

Spezifikationen schreiben

Middleware muss bestimmte Spezifikationen erfüllen: Geben Sie immer einen Abschluss zurück und übergeben Sie immer die gleichen Parameter im Abschluss (bestimmt durch die Hauptlogik). Der Abschluss kehrt immer zurück das Ausführungsergebnis des Handlers;

Wenn die Logik der Middleware abgeschlossen ist, bevor der Handle $handler ($name) zurückgegeben wird, handelt es sich um eine Prä-Middleware, andernfalls handelt es sich um eine Post-Middleware.

Das obige ist der detaillierte Inhalt vonWas ist PHP-Middleware?. 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