Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
其他存储库中的Laravel存储库_Laravel_Dependency Injection_Repository Pattern - Fatal编程技术网

其他存储库中的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注入