PHP中间键:所谓的中间键其实就是在执行路由之前或者之后执行一些函数,之前可以检测该API是否可以被请求,有没有权限等,后置中间件可以实现记录一些函数执行之后的日志等。
暂时想到的方法有可以在父级controller封装一个方法,在执行一些函数的时候先执行beferAction,执行完Action之后再执行afterAction,这样可以达到简单的中间键。
接触laravel之后发现laravel中的中间键采用了闭包(Closure),简单示例如下:
$application = function ($names, $a){
echo "this is a {$names} aaa {$a} application";
echo "<br />";
};
// 前置中间键
$auth = function ($handler){
return function ($name, $as) use ($handler){
echo "{$name} need {$as} a auth middleware";
echo "<br />";
return $handler;
};
};
$stack = [];
// 打包
function pack_middleware($handler, $stack)
{
foreach (array_reverse($stack) as $key => $middleware) {
$handler = $middleware($handler);
}
return $handler;
}
$stack['auth'] = $auth;
$run = pack_middleware($application, $stack);
$run('Laravle', "aaaaa");
最后打印结果如下
Laravle need aaaaa a auth middleware
this is a a aaa aa application
其中array_reverse函数依次执行最后返回结果,例如:
$a=array("a"=>"Volvo","b"=>"BMW","c"=>"Toyota");
print_r(array_reverse($a));
最后打印结果如下:Array ( [c] => Toyota [b] => BMW [a] => Volvo )
本文探讨了PHP中间件的概念及其在Laravel框架中的应用。介绍了如何使用闭包实现前置与后置中间件,以及如何通过中间件进行权限检测和日志记录等功能。
851

被折叠的 条评论
为什么被折叠?



