【问题标题】:laravel command handle function dependency injectionlaravel 命令句柄函数依赖注入
【发布时间】:2018-07-19 18:08:37
【问题描述】:

我在 lavarel webapp 中创建了一个非常基本的命令:

$ php artisan make:command MyCommand

我需要在句柄函数中访问一个存储库。

存储库类对我来说基本上是一个静态类。

我已经阅读了一些教程,并且我已经阅读了我需要添加我的存储库作为参数来以这种方式处理函数:

public function handle(MyRepository $repo)
{
    ...
}

有效!

我的问题是它为什么有效? php怎么猜到这个参数调用handle函数?

是依赖注入吗?

谢谢

【问题讨论】:

    标签: laravel


    【解决方案1】:

    Laravel 知道解决依赖关系,因为它通过容器调用方法,而不是直接调用:https://github.com/laravel/framework/blob/862c4529edfce579bf7746797b7f95e4aed304a0/src/Illuminate/Bus/Dispatcher.php#L94

    如果您对某些东西的工作原理感到好奇,那么值得深入研究框架源代码。

    【讨论】:

    • 谢谢,但为什么在我没有在某处注册 MyRepository(例如作为提供者)的情况下它可以工作
    • 如果 Laravel 可以解析一个类,它会的。所以如果你输入了 MyRepository 并且 Laravel 可以构造它,那么它就会被注入。它不需要在容器中显式注册,但如果您想将存储库实现绑定到接口,您可以这样做。
    猜你喜欢
    • 2016-10-05
    • 2021-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-19
    • 2022-01-16
    • 2016-07-19
    • 2019-12-25
    相关资源
    最近更新 更多