Laravel est un framework PHP populaire qui fournit de nombreuses fonctionnalités et outils pour aider les développeurs à créer des applications Web de haute qualité. Une fonctionnalité notable est le middleware, qui permet aux développeurs d'effectuer certaines actions avant que la requête n'atteigne sa destination finale dans l'application. Cet article vous expliquera comment créer un middleware Laravel.
Le middleware est un moyen d'intercepter les requêtes de routage. Lorsque l'application reçoit une requête, le middleware effectuera une série d'opérations pour modifier et contrôler la requête. Le middleware peut être utilisé pour diverses opérations telles que l'authentification, le contrôle d'accès, la mise en cache, etc.
Laravel est livré avec des middlewares, tels que auth
, csrf
, throttle
, etc. De plus, les développeurs peuvent créer leur propre middleware pour accomplir des tâches plus spécifiques. auth
,csrf
,throttle
等。此外,开发者还可以创建自己的中间件来完成更特定的任务。
在Laravel中创建中间件非常简单,只需要执行以下命令即可生成一个新的中间件:
php artisan make:middleware MyMiddleware
以上命令将会在app/Http/Middleware
目录下创建一个名为MyMiddleware
的新中间件类。该类将包含两个方法:handle()
和__construct()
。
handle()
方法是中间件的核心,它定义了中间件被执行时需要执行的操作。handle()
方法将接收两个参数:请求对象和一个回调闭包。通常情况下,中间件会修改请求并将其传递给下一个处理程序。
以下是一个简单的中间件示例,用于记录请求的响应时间:
<?php namespace App\Http\Middleware; use Closure; use Illuminate\Support\Facades\Log; class ResponseTimeMiddleware { public function handle($request, Closure $next) { $start_time = microtime(true); $response = $next($request); $end_time = microtime(true); $response_time = round(($end_time - $start_time) * 1000, 2); Log::info("Response time: {$response_time}ms"); return $response; } }
在上面的示例中,我们记录了请求的开始时间,并在请求结束后计算响应时间。然后,我们将响应时间记录到应用程序日志中,并将响应返回。
要使用中间件,需要将其注册到应用程序中。Laravel提供了两种方法来注册中间件。
全局中间件将在每个请求处理程序之前运行。要注册全局中间件,请打开app/Http/Kernel.php
文件,并将类添加到$middleware
属性中。
例如,要注册我们之前创建的ResponseTimeMiddleware
中间件,我们可以将以下代码添加到$middleware
数组中:
protected $middleware = [ \App\Http\Middleware\ResponseTimeMiddleware::class ];
路由中间件仅在指定路由上运行。要注册路由中间件,请在app/Http/Kernel.php
文件中的$routeMiddleware
属性中添加类别名。
例如,要注册之前创建的ResponseTimeMiddleware
中间件,我们可以将以下代码添加到$routeMiddleware
protected $routeMiddleware = [ 'response_time' => \App\Http\Middleware\ResponseTimeMiddleware::class, ];La commande ci-dessus sera dans
app/Http/Middleware
Créer un nouveau middleware. classe nommée MyMiddleware
dans le répertoire. Cette classe contiendra deux méthodes : handle()
et __construct()
. handle()
est le cœur du middleware, qui définit les opérations qui doivent être effectuées lors de l'exécution du middleware. La méthode handle()
recevra deux paramètres : l'objet de requête et une fermeture de rappel. En règle générale, le middleware modifie la requête et la transmet au gestionnaire suivant. 🎜🎜Voici un exemple simple de middleware pour enregistrer le temps de réponse d'une requête : 🎜Route::get('/', function () { return view('welcome'); })->middleware('response_time');🎜Dans l'exemple ci-dessus, nous enregistrons l'heure de début de la requête et calculons le temps de réponse une fois la requête terminée. Nous enregistrons ensuite le temps de réponse dans le journal des applications et renvoyons la réponse. 🎜🎜Enregistrement du middleware🎜🎜Pour utiliser le middleware, vous devez l'enregistrer auprès de votre application. Laravel propose deux méthodes pour enregistrer le middleware. 🎜
app/Http/Kernel.php
et ajoutez la classe à l'attribut $middleware
. 🎜🎜Par exemple, pour enregistrer le middleware ResponseTimeMiddleware
que nous avons créé précédemment, nous pouvons ajouter le code suivant au tableau $middleware
: 🎜rrreee$routeMiddleware
dans le fichier app/Http/Kernel.php
. 🎜🎜Par exemple, pour enregistrer le middleware ResponseTimeMiddleware
que nous avons créé précédemment, nous pouvons ajouter le code suivant au tableau $routeMiddleware
: 🎜rrreee🎜Dans le fichier de route, nous pouvons utilisez le nom de la catégorie pour spécifier le middleware à utiliser : 🎜rrreee🎜Conclusion🎜🎜Le middleware est une fonctionnalité puissante du framework Laravel, qui permet aux développeurs de modifier et de contrôler les requêtes avant que l'application n'exécute la requête. Dans cet article, nous avons exploré la création et l'enregistrement du middleware Laravel, et comment les utiliser dans votre application. Si vous n'avez jamais utilisé de middleware auparavant, je vous recommande de prendre le temps de les apprendre et de commencer à les utiliser. 🎜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!