Home > Backend Development > PHP Problem > what is php middleware

what is php middleware

(*-*)浩
Release: 2023-02-23 18:16:02
Original
5059 people have browsed it

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;);
Copy after login

Output :

Laravle need a filter middleware
Laravle need a auth middleware
this is a Laravle application
Laravle need a log middleware
Copy after login

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;);
Copy after login

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!

Related labels:
php
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template