【问题标题】:Laravel 5: How can I get automatic DI via constructors of custom classes?Laravel 5:如何通过自定义类的构造函数获得自动 DI?
【发布时间】:2015-01-26 15:05:59
【问题描述】:

Laravel 文档指出:“您可以简单地“类型提示”由容器解析的类的构造函数中的依赖关系,包括控制器、事件侦听器......”

这里的关键词是“由容器解析的类”——我一直在尝试用我自己的自定义类(服务、存储库、处理程序等)来重现它,但我不太明白.控制器(和其他类)通过处理任何依赖项的自动注入的容器来解析。见https://github.com/laravel/framework/blob/master/src/Illuminate/Routing/ControllerDispatcher.php#L53

我的问题是如何用我自己的类结构实现同样的功能。它不像将类绑定到 IoC 并通过 getter 解决它们那么简单。我想知道是否有人可能在他们的应用程序中设置了类似的东西并且愿意分享他们的技术:)

不胜感激!

【问题讨论】:

    标签: php dependency-injection ioc-container laravel-5


    【解决方案1】:

    容器解析对象图形。所以你需要让你的班级出现在图表上。

    如果控制器由 Laravel 的容器处理,那么您就可以:将您的服务注入您的控制器,Laravel 将为您处理它。

    “为你处理”我的意思是它将创建和注入控制器的依赖项,以及依赖项的依赖项,并且......这是传递性的。

    例如:

    • 用户控制器
      • 用户服务
        • UserRepository(或任何其他类)

    所以问题是:你想在哪里注入你的类?

    • 在控制器中:Laravel 会处理它
    • 在另一个对象中:转到“你想在哪里注入你的类?”
    • 在不是控制器的“根”对象中(例如,测试类、命令类、...):这里你需要 Laravel 来创建对象。难不难,我对 Laravel 还不够了解……

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-08
      • 2011-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多