gpt4 book ai didi

其他存储库中的 Laravel 存储库

转载 作者:行者123 更新时间:2023-12-04 20:40:57 28 4
gpt4 key购买 nike

所以我最近开始在我的工作项目中使用存储库模式。我一直遇到同样的问题,我似乎无法找到答案:

可以将另一个存储库注入(inject)现有存储库吗?这样做有什么负面影响?

例如 :

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
}
}
CrawlsRepository里面有一些方法只需要使用存档模型,这意味着它需要使用 ArchiveRepository保持模式。

你们在这些情况下会做什么?我觉得我在这里遗漏了一些东西,我以前读过,人们说如果你觉得需要拉另一个存储库,然后评估天气你真的需要 2 个单独的存储库,让我先发制人地回答这个问题,我做。

感谢您提供的任何方向! :)

最佳答案

从技术上讲,这样做是可以的。事实上,这很好,因为您使用的是依赖注入(inject),因此您不仅仅依赖于一种实现。

从概念上讲,存储库代表数据源访问的包装器。所以我认为可以使用另一个存储库来进一步抽象数据检索。

另一方面,当你说:There are certain methods inside the CrawlsRepository that just have to use the Archive Mode那么这些方法在 CrawlsRepository 中没有任何作用。它们属于 ArchiveRepository。

这里的用例是当您想要返回属于您的 CrawlRepository 的内容时,但您想要返回以某种方式链接到您的数据的文件。
在这种情况下,CrawlRepository 必须调用 ArchiveRepository 以在返回之前收集所需的文件。

但同样,如果一个方法只需要 ArchiveRepository,那么您似乎做错了。

我希望我的解释足够清楚,因为这是一个相当抽象和主观的话题。

关于其他存储库中的 Laravel 存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26260102/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com