Maison  >  Article  >  cadre php  >  Utiliser un middleware pour gérer les requêtes dans ThinkPHP6

Utiliser un middleware pour gérer les requêtes dans ThinkPHP6

王林
王林original
2023-06-20 18:39:421542parcourir

【Introduction】

ThinkPHP6 est un framework open source PHP bien connu. Il hérite avec élégance des excellentes fonctionnalités de la version précédente et intègre les nouvelles fonctionnalités de PHP7, le rendant plus rapide et plus sécurisé. Dans ThinkPHP6, le middleware est un élément très important, qui permet aux développeurs de traiter avant, pendant et après la demande pour obtenir des applications plus flexibles et évolutives.

【Texte】

1. Qu'est-ce qu'un middleware ?

Le middleware fait référence au code qui peut être exécuté avant et après qu'une requête parvienne à votre application. L'existence d'un middleware permet d'étendre et de gérer facilement les applications.

Dans ThinkPHP6, le middleware peut implémenter les fonctions suivantes :

  1. Prétraitement d'itinéraire, tel que : vérification des jetons, interception des requêtes illégales, etc.
  2. Prétraitement de la méthode du contrôleur, tel que : comptage des paramètres de requête PV, UV ; traitement, etc.
  3. Post-traitement de la méthode du contrôleur, tel que la mise en cache des données de réponse, la journalisation, etc.
  4. Post-traitement de routage, tel que : problèmes de réponse, etc.

2. Utilisation du middleware

Utilisation du middleware de ThinkPHP6 est très simple, seule la configuration du Middleware doit être effectuée dans le fichier de configuration, qui peut être exécuté dans l'ordre spécifié.

2.1 Enregistrement du middleware

Dans le fichier config/middleware.php, vous pouvez voir la liste des middlewares par défaut suivante :

<?php

return [
    // 别名或分组
    'alias'    => [],
    // 优先级设置,此数组中的中间件会按照优先级进行先后排序
    'priority' => [],
    // 中间件列表
    'middleware' => [
            hinkmiddlewareSessionInit::class,
            hinkmiddlewareAllowCrossDomain::class,
    ],
];

Parmi eux, le premier middleware est le middleware SessionInit, dont le but est d'initialiser la session, et le second Le middleware est le middleware AllowCrossDomain, conçu pour autoriser les requêtes inter-domaines. Si vous devez configurer votre propre middleware, vous pouvez définir votre propre classe de middleware et l'ajouter à la configuration ci-dessus.

2.2 Tri des middlewares

Les middlewares dans ThinkPHP6 peuvent être triés en fonction de la priorité. Plus la valeur de priorité est petite, plus l'ordre d'exécution est élevé. Dans le fichier de configuration du middleware, vous pouvez définir la priorité du middleware pour le groupe ou l'alias spécifié, comme indiqué ci-dessous :

<?php

return [
    // 别名或分组
    'alias'    => [
        'home' => ppmiddlewareCheck::class,
    ],
    // 优先级设置,此数组中的中间件会按照优先级进行先后排序
    'priority' => [
        ppmiddlewareDemo::class => 1,
        ppmiddlewareTest::class => 2,
    ],
    // 中间件列表
    'middleware' => [
            hinkmiddlewareSessionInit::class,
            hinkmiddlewareAllowCrossDomain::class,
    ],
];

Dans la configuration ci-dessus, définissez le middleware de démonstration sur la priorité 1 et le middleware de test sur la priorité 2. .

2.3 Utilisation du middleware

Dans ThinkPHP6, le middleware peut être utilisé pour le routage global ou le routage de groupe, ou pour des contrôleurs ou des méthodes de contrôleur spécifiés.

(1) Le routage global utilise un middleware

Dans le fichier route/route.php du répertoire de l'application, vous pouvez enregistrer le routage global comme suit :

<?php

use thinkacadeRoute;

Route::get('hello/:name','index/hello')->middleware('Check');

Dans le code ci-dessus, ajoutez-le via le middleware('Check') A un middleware nommé Check est créé, ce qui signifie que le middleware Check est exécuté avant l'exécution de la méthode index/hello.

(2) Le routage de groupe utilise un middleware

Dans le fichier route/group.php du répertoire de l'application, vous pouvez enregistrer le routage de groupe, comme indiqué ci-dessous :

<?php

use thinkacadeRoute;

//定义分组路由
Route::group('/api', function () {
    Route::get('/user/:id', 'api/user/read')->middleware('Check');
});

Dans le code ci-dessus, un groupe nommé api est défini Routage, où la route /user/:id utilise un middleware appelé Check.

(3) Utilisation d'un middleware au niveau du contrôleur

Dans le fichier du contrôleur, vous pouvez définir un middleware au niveau de la méthode via des méthodes spécialement nommées, comme indiqué ci-dessous :

<?php
namespace appcontroller;

class Test
{
    // 方法级别
    public function read() 
    {
        return "Hello Word!";
    }

    // 方法级别
    public function write()
    {
        return "Hello China!";
    }

    // 控制器级别
    protected $middleware = [ppmiddlewareCheck::class];

    // 方法级别
    protected $middleware = [
        'read' => [ppmiddlewareReadCheck::class],
        'write' => [ppmiddlewareWriteCheck::class],
    ];
}

Dans le code ci-dessus, les méthodes de lecture et d'écriture utilisent La méthode Le middleware au niveau du contrôleur est un middleware au niveau de la méthode et le middleware Check est un middleware au niveau du contrôleur.

【Résumé】

Le Middleware est un outil puissant qui fournit une méthode de traitement des demandes très flexible, nous permettant de traiter les données avant, pendant et après la demande. Dans ThinkPHP6, l'utilisation du middleware est très simple. Il vous suffit d'écrire des classes de middleware selon certaines règles et de les configurer. Il offre une grande flexibilité et évolutivité.

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