Home  >  Article  >  Backend Development  >  what is php middleware

what is php middleware

(*-*)浩
(*-*)浩Original
2019-09-06 14:23:535002browse

what is php middleware

#php middleware (middleware) is a closure and returns a closure.

Middleware provides a convenient mechanism for filtering HTTP requests entering the application, which can be divided into pre-middleware and post-middleware. Commonly used to verify whether the user is authenticated, add response headers (cross-domain), record request logs, etc. (Recommended learning: PHP programming from entry to proficiency)

what is php middleware

##Example

<?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;);

Output :

Laravle need a filter middleware
Laravle need a auth middleware
this is a Laravle application
Laravle need a log middleware

Packaging program

The execution order of middleware is determined by the packaging function (pack_middleware). The closure returned here is actually equivalent to:

$run = $log($filter($auth($application)));
$run(&#39;Laravle&#39;);

Writing specifications

Middleware must meet certain specifications: always return a closure, and always pass in the same parameters in the closure (determined by the main logic), The closure always returns the execution result of the handler;

If the logic of the middleware is completed before returning the handle return $handler($name), it is a pre-middleware, otherwise it is a post-middleware.

The above is the detailed content of what is php middleware. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn