Maison >cadre php >Laravel >Comment créer une clé du milieu dans Laravel

Comment créer une clé du milieu dans Laravel

PHPz
PHPzoriginal
2023-04-11 15:05:28918parcourir

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.

Qu'est-ce qu'un middleware ?

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. authcsrfthrottle等。此外,开发者还可以创建自己的中间件来完成更特定的任务。

创建中间件

在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

Créer un middleware

Créer un middleware dans Laravel est très simple. Exécutez simplement la commande suivante pour générer un nouveau middleware :

protected $routeMiddleware = [
    &#39;response_time&#39; => \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().

La méthode 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. 🎜

Global Middleware

🎜Le middleware global s'exécutera avant chaque gestionnaire de requêtes. Pour enregistrer un middleware global, ouvrez le fichier 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

Routing Middleware h3>🎜Le middleware d'itinéraire ne s'exécute que sur les itinéraires spécifiés. Pour enregistrer le middleware de route, ajoutez le nom de la catégorie dans l'attribut $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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn