其他存储库中的Laravel存储库
因此,我最近开始在我的工作项目中使用存储库模式。我不断遇到同样的问题,我似乎找不到答案: 可以将另一个存储库注入现有存储库吗?这样做的负面影响是什么? 例如:其他存储库中的Laravel存储库,laravel,dependency-injection,repository-pattern,Laravel,Dependency Injection,Repository Pattern,因此,我最近开始在我的工作项目中使用存储库模式。我不断遇到同样的问题,我似乎找不到答案: 可以将另一个存储库注入现有存储库吗?这样做的负面影响是什么? 例如: class CrawlsRepository implements CrawlsRepositoryInterface { public function __construct(ArchiveRepository $archive) { $this->archive = $archive;
class CrawlsRepository implements CrawlsRepositoryInterface {
public function __construct(ArchiveRepository $archive)
{
$this->archive = $archive;
}
...
...
public function getCrawlList()
{
// Do stuff with $this->crawl
// Do stuff with $this->archive
}
}
crawsrepository
中有一些方法只需要使用归档模型,这意味着它需要使用ArchiveRepository
来维护模式
在这种情况下,你们会怎么做?我觉得我在这里遗漏了一些东西,我以前读过,人们说如果你觉得有必要引入另一个存储库,那么首先评估你是否真的需要两个独立的存储库,让我先发制人地回答这个问题,我会的
感谢您提供的任何指导!:) 从技术上讲,这样做是可以的。事实上,这很好,因为您正在使用依赖项注入,所以您不必只依赖于一个实现 从概念上讲,存储库表示围绕数据源访问的包装。所以我认为可以使用另一个存储库来进一步提取数据 另一方面,当你说:
在CrawlsRepository中有一些方法只需要使用归档模式
,那么这些方法在CrawlsRepository中没有任何作用。它们属于档案馆
这里的用例是当您希望返回属于您的存储库的内容,但希望返回以某种方式链接到您的数据的归档文件时。
在这种情况下,存储库必须在返回之前调用ArchiveRepository来收集所需的档案
但是,同样,如果一个方法只需要归档库,那么看起来你做得不对
我希望我的解释足够清楚,因为这是一个相当抽象和主观的主题。我在进行构造函数注入时遇到了循环依赖。在这种情况下,我切换到setter注入