Laravel依赖注入和绑定

时间:2017-09-11 21:07:35

标签: php laravel web dependency-injection frameworks

任何人都可以为我清空! 为什么我们需要通过存储库类实现接口并将它们绑定在服务提供者中?如果它与特定类绑定,接口的用途是什么?如果是这样,为什么我们不能在控制器中注入存储库本身? 最后一件事,无论如何依赖是什么? 感谢。

1 个答案:

答案 0 :(得分:0)

服务提供者将服务/存储库绑定到应用程序。它应该与其接口(可以用作依赖注入的属性类型)或其别名(例如' foo.bar')绑定。

使用别名的缺点是依赖必须是类本身,单例保留在应用程序中。使用其Contract(接口)的优点是,遵循IoC模式,您可以让注册的存储库实现给定的接口,允许更改供应商代码,例如,如果您通过替换其服务提供商来更改主存储库,如果单例在其主界面注册,则注入仍然有效。

因此,如果您打算使用某些供应商(或您自己的代码)来替换Laravel核心功能,那么依赖注入仍然有效,但是通过提供与Laravel实现相同合同的供应商存储库。