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.
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['log'] = $log; $stack['filter'] = $filter; $stack['auth'] = $auth; $run = pack_middleware($application, $stack); $run('Laravle');
Ausgabe:
Laravle need a filter middleware Laravle need a auth middleware this is a Laravle application Laravle need a log middleware
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('Laravle');
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!