【问题标题】:When to use defer service provider?何时使用延迟服务提供者?
【发布时间】:2018-12-16 14:41:08
【问题描述】:

我读了 laravel 文档说,

如果您的提供商仅在服务中注册绑定 容器,您可以选择将其注册推迟到其中一个 实际上需要注册的绑定。

我不明白什么是“仅注册绑定”。我谷歌并阅读了很多文章,但我没有找到答案。 你能帮我理解一下吗!

非常感谢^^

【问题讨论】:

    标签: laravel deferred service-provider


    【解决方案1】:

    这是关于 Bindings 的 Laravel 文档。简而言之 - 它告诉服务容器在需要某个类或接口时返回什么。 (您可以通过阅读 PHP 中的依赖注入和依赖注入来了解更多信息)。但是 Laravel 服务提供者不仅限于绑定容器中的类。在提供者中,您可以指向路由文件夹、注册 view() 作曲家等...

    如果除了注册绑定之外,您的服务提供者中没有任何其他代码,那么您可以推迟它,以便代码运行得更快。但是,例如,如果您在服务提供商中注册了第二个路由文件夹 - 那么您不应该推迟注册服务提供商。

    【讨论】:

    • 很好的解释。一个例子是HorizonServiceProvider,它不仅仅是为服务容器添加绑定。如果您推迟其执行,则某些功能将无法工作,直到您需要绑定在提供程序中的服务之一。
    • 感谢您的回答和示例。我有另一个问题。我知道 $this->app->bind(..) 绑定到容器。但是,我如何识别绑定另一个路由的示例代码。 binding($this->app->bind(..)),我认为它只是将一些东西绑定到服务容器,我没有找到 laravel 的另一种语法来绑定一些东西到路由。你能解释一下吗?谢谢!
    • @ray github.com/laravel/framework/blob/… 这里是 laravel 绑定来自webapi 文件夹的路由
    • 我想我明白了。你的意思是服务提供商可以做很多事情。如果它只向服务容器注册一些东西,它可以写成一个 DEFER 服务提供者。对吧!?
    • 有谁知道为什么 IdeHelperServiceProvider 被推迟,但有一个 boot 方法?
    猜你喜欢
    • 2018-08-06
    • 2016-04-06
    • 2013-12-24
    • 2018-03-24
    • 2015-07-08
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多