5 dependency-injection repository-pattern laravel
所以我最近开始在我的工作项目中使用Repository模式.我一直在遇到一个我似乎无法找到答案的问题:
将另一个存储库注入现有存储库是否可以?这样做有什么负面影响?
例如:
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
}
}
Run Code Online (Sandbox Code Playgroud)
还有里面的一些方法CrawlsRepository
,只是必须使用归档模式,这意味着它需要使用ArchiveRepository
到维护模式.
你们/ gals在这些情况下做了什么?我觉得我在这里遗漏了一些东西,我以前读过,有人说如果你觉得需要拉另一个存储库,然后评估天气你真的需要2个单独的存储库,让我先发制人地回答,我做.
感谢您提供的任何指导!:)
从技术上讲,这样做是可以的。事实上,这很好,因为您正在使用依赖项注入,因此您不会只依赖于一种实现。
从概念上讲,存储库代表数据源访问的包装器。所以我认为使用另一个存储库来进一步抽象数据检索是可以的。
另一方面,当你说:
There are certain methods inside the CrawlsRepository that just have to use the Archive Mode
那么这些方法在 CrawlsRepository 中没有任何作用。它们属于 ArchiveRepository。
这里的用例是当您想要返回属于您的 CrawlRepository 的内容,但您想要返回以某种方式链接到您的数据的档案时。在这种情况下,CrawlRepository 必须在返回之前调用 ArchiveRepository 来收集所需的档案。
但同样,如果一个方法只需要 ArchiveRepository,那么你似乎做错了。
我希望我的解释足够清楚,因为这是一个相当抽象和主观的话题。