这里的 $next 方法是什么意思啊?

我在laravel源码里,文档里都没有找到关于这个方法的定义
这里的$next方法是什么意思啊?

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 8
ShiKi
class a{
    public static function handle(Closure $next)
    {
        echo 'a';
        $next();
    }
}
class b{
    public static function handle(Closure $next)
    {
        echo 'b';
        $next();
    }
}
class c{
    public static function handle(Closure $next)
    {
        echo 'c';
        $next();
    }
}
$last = function(){
  echo 'last';
};
$function =  function($f,$s){
    return function ()use($f,$s){
        $s::handle($f);
    };
};
$arr = ['a','b','c'];

$handle =  array_reduce($arr,$function,$last);

call_user_func($handle);

把这个复制过去运行下,应该就可以理解了。

3年前 评论
reterter (楼主) 3年前
JerryBool 3年前

闭包的调用 例如:

$next = function ()
{
  echo "hello";
}

$next();

3年前 评论

@lyxxxh 你是说,所有的闭包函数,都是这种特性吗?

3年前 评论

你可以简单的理解为 让请求继续向下走, 比如走到另一个中间件, 或者 到 控制器

3年前 评论

@ouer1994 是的,laravel文档里是这么解释的。但是这种特性,是闭包函数本身的特性,还是$next()函数自定义的?

3年前 评论
ouer1994 3年前
lyxxxh 3年前
reterter (作者) (楼主) 3年前
lyxxxh 3年前

谢谢楼上2位,我再好好想一想,如果这里不用闭包函数,会是什么效果,是不是只有闭包函数,才能达到目的

3年前 评论
ShiKi
class a{
    public static function handle(Closure $next)
    {
        echo 'a';
        $next();
    }
}
class b{
    public static function handle(Closure $next)
    {
        echo 'b';
        $next();
    }
}
class c{
    public static function handle(Closure $next)
    {
        echo 'c';
        $next();
    }
}
$last = function(){
  echo 'last';
};
$function =  function($f,$s){
    return function ()use($f,$s){
        $s::handle($f);
    };
};
$arr = ['a','b','c'];

$handle =  array_reduce($arr,$function,$last);

call_user_func($handle);

把这个复制过去运行下,应该就可以理解了。

3年前 评论
reterter (楼主) 3年前
JerryBool 3年前

Laravel中间件,管道之面向切面编程 具体看这篇,楼上的代码也写的很明白

3年前 评论
reterter (楼主) 3年前
No_Panic

路由通过中间件的整个过程就像是在剥洋葱. $next就是要执行的下一层洋葱

3年前 评论
reterter (楼主) 3年前
No_Panic (作者) 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!