Maison > développement back-end > Problème PHP > qu'est-ce que le middleware php

qu'est-ce que le middleware php

(*-*)浩
Libérer: 2023-02-23 18:16:02
original
5050 Les gens l'ont consulté

qu'est-ce que le middleware php

Le middleware PHP est une fermeture et renvoie une fermeture.

Le middleware fournit un mécanisme pratique pour filtrer les requêtes HTTP entrant dans l'application et peut être divisé en pré-middleware et post-middleware. Couramment utilisé pour vérifier si l'utilisateur est authentifié, ajouter des en-têtes de réponse (inter-domaines), enregistrer les journaux de demandes, etc. (Apprentissage recommandé : Programmation PHP de l'entrée à la maîtrise)

quest-ce que le middleware php

Exemple

<?php
// 框架核心应用层
$application = function($name) {
    echo "this is a {$name} application\n";
};
 
// 前置校验中间件
$auth = function($handler) {
    return function($name) use ($handler) {
        echo "{$name} need a auth middleware\n";
        return $handler($name);
    };
};
 
// 前置过滤中间件
$filter = function($handler) {
    return function($name) use ($handler) {
        echo "{$name} need a filter middleware\n";
        return $handler($name);
    };
};
 
// 后置日志中间件
$log = function($handler) {
    return function($name) use ($handler) {
        $return = $handler($name);
        echo "{$name} need a log middleware\n";
        return $return;
    };
};
 
// 中间件栈
$stack = [];
 
// 打包
function pack_middleware($handler, $stack)
{
    foreach (array_reverse($stack) as $key => $middleware) 
    {
        $handler = $middleware($handler);
    }
    return $handler;
}
 
// 注册中间件
// 这里用的都是全局中间件,实际应用时还可以为指定路由注册局部中间件
$stack[&#39;log&#39;] = $log;
$stack[&#39;filter&#39;] = $filter;
$stack[&#39;auth&#39;] = $auth;
 
$run = pack_middleware($application, $stack);
$run(&#39;Laravle&#39;);
Copier après la connexion

Sortie :

Laravle need a filter middleware
Laravle need a auth middleware
this is a Laravle application
Laravle need a log middleware
Copier après la connexion

Programme de packaging

L'ordre d'exécution du middleware est déterminé par la fonction de packaging (pack_middleware). La fermeture renvoyée ici est en fait équivalente à :

$run = $log($filter($auth($application)));
$run(&#39;Laravle&#39;);
Copier après la connexion
).

Spécifications d'écriture

Le middleware doit répondre à certains spécifications : toujours renvoyer une fermeture, et toujours passer les mêmes paramètres dans la fermeture (déterminés par la logique principale), La fermeture renvoie toujours le résultat de l'exécution du handler ;

Si la logique du middleware est terminée avant de renvoyer le handle return $handler ($name), il s'agit d'un pré-middleware, sinon c'est d'un post-middleware.

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!

Étiquettes associées:
php
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal