Home > Article > Backend Development > 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)
##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['log'] = $log; $stack['filter'] = $filter; $stack['auth'] = $auth; $run = pack_middleware($application, $stack); $run('Laravle');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('Laravle');
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!