【发布时间】:2018-02-20 05:00:12
【问题描述】:
谁能帮我清理一下空气! 为什么我们需要通过存储库类来实现接口并将它们绑定在服务提供者中?如果接口与特定类绑定,接口的用途是什么?如果是这样,为什么我们不能将存储库本身注入控制器中? 最后一件事,无论如何依赖是什么? 谢谢。
【问题讨论】:
标签: php laravel web dependency-injection frameworks
谁能帮我清理一下空气! 为什么我们需要通过存储库类来实现接口并将它们绑定在服务提供者中?如果接口与特定类绑定,接口的用途是什么?如果是这样,为什么我们不能将存储库本身注入控制器中? 最后一件事,无论如何依赖是什么? 谢谢。
【问题讨论】:
标签: php laravel web dependency-injection frameworks
服务提供者将服务/存储库绑定到应用程序。它应该与它的接口(然后可以用作依赖注入的属性类型)或其别名(例如'foo.bar')绑定。
使用别名的缺点是依赖必须是类本身,单例保存在应用程序中。使用其 Contract(接口)的优势在于,遵循 IoC 模式,您可以让已注册的存储库实现给定的接口,从而允许更改供应商代码,例如,如果您通过替换其服务提供者来更改主存储存储库,则如果单例在其主界面中注册,注入仍然可以工作。
因此,如果您打算使用某些供应商(或您自己的代码)来替换 Laravel 核心功能,依赖注入仍然可以工作,但通过提供与 Laravel 实现相同合同的供应商存储库。
【讨论】: