Heim > Artikel > PHP-Framework > Die Middleware von ThinkPHP6 verstehen
Da die Komplexität moderner Webanwendungen immer weiter zunimmt, wird auch die Codelogik immer komplexer. Um dieses Problem zu lösen, wird Middleware in der modernen Webentwicklung immer beliebter. ThinkPHP6 ist ein beliebtes PHP-Framework, das auch Middleware unterstützt. In diesem Artikel besprechen wir die Grundlagen und praktischen Einsatzmöglichkeiten der ThinkPHP6-Middleware.
In der Webentwicklung bezeichnet Middleware eine Möglichkeit zur Verarbeitung von HTTP-Anfragen und -Antworten. Wenn der Client eine Anfrage an den Server sendet, durchläuft die HTTP-Anfrage mehrere Middlewares und gibt schließlich eine Antwort an den Client zurück.
Middleware kann Anfragen bearbeiten, bevor sie den Zielcontroller oder die Zielaktion erreichen, und sie kann Antworten bearbeiten, bevor sie den Zielcontroller oder die Zielaktion verlassen. Dieser Ansatz ermöglicht es uns, zusätzliche Funktionalität hinzuzufügen, ohne die Anwendungslogik zu ändern.
In ThinkPHP6 kann Middleware global oder nach Bedarf eingesetzt werden. Die gesamte Middleware wird im Verzeichnis app/middleware gespeichert.
Grundstruktur der Middleware:
<?php declare (strict_types=1); namespace appmiddleware; use thinkRequest; use thinkResponse; class SampleMiddleware { public function handle(Request $request, Closure $next): Response { // do something before the controller action $response = $next($request); // do something after the controller action return $response; } }
Dieser Code demonstriert die einfachste Middleware, in der die Handle-Methode erforderlich ist. Es empfängt ein Request-Objekt und einen Abschluss $next. Innerhalb des Abschlusses wird die nächste Middleware oder der nächste Zielcontroller oder die nächste Aktionsmethode aufgerufen und schließlich die Antwort zurückgegeben. Wir können unsere eigene Logik vor und nach dem $next-Aufruf hinzufügen.
Middleware konfigurieren:
// 全局中间件 return [ // 使用定义的中间件类名称或闭包 ppmiddlewareSampleMiddleware::class, ];
// 路由中间件 return [ // 定义中间件名称和对应中间件类名称或闭包 'auth' => ppmiddlewareAuth::class, // 为指定路由添加中间件 'admin' => ['auth', 'log'], ];
Im Folgenden veranschaulichen wir anhand eines einfachen Beispiels, wie Middleware in ThinkPHP6 verwendet wird.
Angenommen, wir entwickeln eine Webanwendung, in der wir die Reaktionszeit jeder Route aufzeichnen müssen. Das Hinzufügen dieser Funktionalität in einem Webframework bedeutet, dass wir in jeder Controller-Methode Code hinzufügen müssen. Mithilfe von Middleware kann dieser Code aus der Controller-Methode extrahiert, der Code vereinfacht und die Wartbarkeit verbessert werden.
<?php declare (strict_types=1); namespace appmiddleware; use thinkRequest; use thinkResponse; class CustomMiddleware { public function handle(Request $request, Closure $next): Response { $startTime = microtime(true); $response = $next($request); $endTime = microtime(true); $response->header('X-Response-Time', $endTime - $startTime); return $response; } }
Diese Middleware zeichnet die Start- und Endzeit jeder Anfrage auf und fügt die Antwortzeit zum Antwortheader hinzu.
In der Datei app/middleware.php fügen Sie CustomMiddleware zur globalen Middleware oder Routing-Middleware hinzu.
// 全局中间件 return [ ppmiddlewareCustomMiddleware::class, ];
Oder fügen Sie Middleware für die angegebene Route in der Routendefinition hinzu.
use appmiddlewareCustomMiddleware; Route::get('hello/:name', 'index/hello')->middleware(CustomMiddleware::class);
Jetzt haben wir der Anwendung erfolgreich eine neue Middleware hinzugefügt. Bei jeder Anfrage erfasst CustomMiddleware die Anfrage- und Antwortzeit und fügt die Antwortzeit dem Antwortheader hinzu.
Middleware ist ein sehr nützliches Tool in der Webentwicklung, das uns dabei helfen kann, unseren Code in kleinere, fokussiertere Komponenten zu unterteilen. In ThinkPHP6 ist Middleware eine leistungsstarke Funktion, die uns helfen kann, den Code zu vereinfachen und die Wartbarkeit zu verbessern. Ich hoffe, dieser Artikel kann Ihnen helfen, die Idee der ThinkPHP6-Middleware und ihre praktische Anwendung zu verstehen.
Das obige ist der detaillierte Inhalt vonDie Middleware von ThinkPHP6 verstehen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!