Laravel 中的闭包参数是如何传入的?

我最近在研究,发现有一段闭包看不懂,麻烦大神指点迷津。
$concrete = $this->getClosure($abstract, $concrete);

protected function getClosure($abstract, $concrete)
{
return function ($container, $parameters = []) use ($abstract, $concrete) {
if ($abstract == $concrete) {
return $container->build($concrete);
}
return $container->make($concrete, $parameters);
};
}

这两段代码是container.php中的,我看不懂闭包的参数$container 和 $parameters 是如何传入的,跪求大神解答?

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
最佳答案

我测试了以下:

public function index()
    {
        // 通过闭包生成一个方法名为 $closure 的方法
        $closure = $this->generateClosure('小明');
        // $closure 的方法不给参数的时候
        $runClosure = $closure(); // 运行结果:"我是闭包生成的方法的参数:空;我是闭包参数:小明"
        // $closure 的方法给参数的时候
        $runClosure = $closure('小红'); // 运行结果:"我是闭包生成的方法的参数:小红;我是闭包参数:小明"
    }

    public function generateClosure($name)
    {
        return function ($who = '空') use ($name) {
            return "我是闭包生成的方法的参数:".$who.";我是闭包参数:".$name;
        };
    }

我也没仔细研究,上面例子大致可以知道那两个参数怎么来的

6年前 评论
讨论数量: 3

楼主解决了吗?我也很疑惑这个问题,希望多多交流

6年前 评论

我测试了以下:

public function index()
    {
        // 通过闭包生成一个方法名为 $closure 的方法
        $closure = $this->generateClosure('小明');
        // $closure 的方法不给参数的时候
        $runClosure = $closure(); // 运行结果:"我是闭包生成的方法的参数:空;我是闭包参数:小明"
        // $closure 的方法给参数的时候
        $runClosure = $closure('小红'); // 运行结果:"我是闭包生成的方法的参数:小红;我是闭包参数:小明"
    }

    public function generateClosure($name)
    {
        return function ($who = '空') use ($name) {
            return "我是闭包生成的方法的参数:".$who.";我是闭包参数:".$name;
        };
    }

我也没仔细研究,上面例子大致可以知道那两个参数怎么来的

6年前 评论

有人解决了吗。。。。我也很疑惑

4年前 评论
btx2015 (楼主) 4年前
phperAdolph (作者) 4年前

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