dsio68964998
2018-05-18 11:29
浏览 50
已采纳

Laravel容器和装订

Laravel 5.6 Documentation says:

There is no need to bind classes into the container if they do not depend on any interfaces. The container does not need to be instructed on how to build these objects, since it can automatically resolve these objects using reflection.

I don't understand it.

Does it mean that I don't have to use any bindigs inside provider's register method if I don't use interfaces?

Then, how can I use dependency injection if I don't use bindigs?

P.S.: in my understending:

"interface" - is this

"bindings" - is bind() and singelton() inside register

图片转代码服务由CSDN问答提供 功能建议

Laravel 5.6文档说:

如果类不依赖于任何接口,则无需将类绑定到容器中。 容器不需要指示如何构建这些对象,因为它可以使用反射自动解析这些对象。

我不知道 理解它。

如果我不使用接口,这是否意味着我不必在提供者的寄存器方法中使用任何bindigs?

然后,如果我不使用bindigs,如何使用依赖注入?

PS: 我的不足之处: \ n

“界面” - 这个

“bindings” - 寄存器中的bind()和singelton()

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • dttphb59319 2018-05-18 11:33
    已采纳

    If you have :

    class Something {
    
    }
    

    You can do app()->make(Something::class) without needing to bind it before hand. The container knows that it can just call the default constructor.

    The same goes for

    class SomethingElse {
           public function __construct(Something $s) { }
    }   
    

    In this case the constructor will also go through the dependency injection. This is all handled automatically by the container.

    However this obviously cannot work for interfaces since interfaces can't be constructed.

    Also if you need something to be bound as a singleton you need to bind it explicitly using app()->singleton(...)

    已采纳该答案
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题