【发布时间】:2017-05-25 19:36:48
【问题描述】:
我们的应用程序中有两种类型的存储库:
App\Repositories\Database\PostRepositoryApp\Repositories\ElasticSearch\PostRepository
他们都执行相同的合约PostRepositoryInterface。
我的问题是:
大多数情况下,我们将使用Database\PostRepository 来检索我们的实体,尽管在某些情况下我们希望使用ElasticSearch\PostRepository:
- 当我们返回大量收藏时
- 通过全文查询搜索时
如果我们想实际使用我们的 ElasticSearch 存储库,我们如何绕过我们的默认服务绑定:PostRepositoryInterface >> Database\PostRepository?
我觉得直接依赖于我们具体的ElasticSearch\PostRepository 实现并不是一个好主意。
【问题讨论】:
-
在 laravel 上查看提供者和 IoC 文档。您可以在运行时切换绑定。
-
当然可以,虽然在运行时并没有那么多切换。相反,它总是在那个位置被调用
-
例如我们总是想在一些控制器和其他类中使用它
标签: php laravel model-view-controller dependency-injection interface