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 是如何传入的,跪求大神解答?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

我测试了以下:

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;
        };
    }

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

5年前 评论
讨论数量: 3

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

5年前 评论

我测试了以下:

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;
        };
    }

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

5年前 评论

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

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

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