À mesure que la complexité des applications Web modernes continue d'augmenter, la logique du code devient de plus en plus complexe. Pour résoudre ce problème, les middlewares deviennent de plus en plus populaires dans le développement Web moderne. ThinkPHP6 est un framework PHP populaire qui prend également en charge les middlewares. Dans cet article, nous aborderons les bases et les utilisations pratiques du middleware ThinkPHP6.
Dans le développement Web, le middleware fait référence à un moyen de traiter les requêtes et les réponses HTTP. Lorsque le client envoie une requête au serveur, la requête HTTP passe par plusieurs middlewares et renvoie finalement une réponse au client.
Le middleware peut fonctionner sur les requêtes avant qu'elles n'arrivent au contrôleur ou à l'action cible, et ils peuvent fonctionner sur les réponses avant qu'elles ne quittent le contrôleur ou l'action cible. Cette approche nous permet d'ajouter des fonctionnalités supplémentaires sans modifier la logique de l'application.
Dans ThinkPHP6, le middleware peut être utilisé globalement ou selon les besoins. Tous les middlewares sont stockés dans le répertoire app/middleware.
Structure de base du 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; } }
Ce code démontre le middleware le plus simple, dans lequel la méthode handle est requise. Il reçoit un objet Request et une fermeture $next. Lors de la fermeture, le prochain middleware, contrôleur cible ou méthode d'action est appelé, et enfin la réponse est renvoyée. Nous pouvons ajouter notre propre logique avant et après l'appel $next.
Configuration du middleware :
// 全局中间件 return [ // 使用定义的中间件类名称或闭包 ppmiddlewareSampleMiddleware::class, ];
// 路由中间件 return [ // 定义中间件名称和对应中间件类名称或闭包 'auth' => ppmiddlewareAuth::class, // 为指定路由添加中间件 'admin' => ['auth', 'log'], ];
Ci-dessous, nous utiliserons un exemple simple pour illustrer comment utiliser le middleware dans ThinkPHP6.
Supposons que nous développions une application Web dans laquelle nous devons enregistrer le temps de réponse de chaque itinéraire. L'ajout de cette fonctionnalité dans un framework Web signifie que nous devons ajouter du code dans chaque méthode de contrôleur. L'utilisation d'un middleware peut extraire ce code de la méthode du contrôleur, simplifier le code et améliorer la maintenabilité.
<?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; } }
Ce middleware enregistrera l'heure de début et l'heure de fin de chaque requête et ajoutera le temps de réponse à l'en-tête de réponse.
Dans le fichier app/middleware.php, ajoutez CustomMiddleware au middleware global ou au middleware de routage.
// 全局中间件 return [ ppmiddlewareCustomMiddleware::class, ];
Ou ajoutez un middleware pour l'itinéraire spécifié dans la définition de l'itinéraire.
use appmiddlewareCustomMiddleware; Route::get('hello/:name', 'index/hello')->middleware(CustomMiddleware::class);
Nous avons maintenant ajouté avec succès un nouveau middleware à l'application. Chaque fois qu'une demande est effectuée, CustomMiddleware capture l'heure de la demande et le temps de réponse et ajoute le temps de réponse à l'en-tête de réponse.
Le middleware est un outil très utile dans le développement Web qui peut nous aider à diviser notre code en composants plus petits et plus ciblés. Dans ThinkPHP6, le middleware est une fonctionnalité puissante qui peut nous aider à simplifier le code et à améliorer la maintenabilité. J'espère que cet article pourra vous aider à comprendre l'idée du middleware ThinkPHP6 et son application pratique.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!