Controller Layer 不能使用 Repository Layer 吗?

Should Controller Layer cannot use Repository Layer?

我对 Controller 直接使用 Repository 感到困惑。

难道Repository层一定要被Service层封装吗?

我现在在 Laravel 中这样使用:

class SomeController
{
    private SomeRepository $someRepository;

    public __construct(SomeRepository $someRepository)
    {
        $this->someRepository = $someRepository;
    }
}

直接从控制器层使用存储库层不好吗?

注意:对于基于 MVC 的应用程序,此答案是笼统的。它没有特别提到 Laravel。

控制器:

在正确的 MVC 实现中,控制器应该承担一项责任:获取用户输入并更新 domain model with it. So, a controller method should contain just a few lines of code (2-3). The whole steps involved in updating the model, e.g. the corresponding application logic, should therefore be delegated to other components: the services of the service layer

考虑到上述情况,将 data mappers or repositories 作为数据映射器层的附加层直接注入控制器而不是服务是不好的,因为更新模型的整个应用程序逻辑然后层将驻留在控制器方法中。

观点:

view组件("V" in "MVC",组成各种 类,不仅是像 "users_list.html.twig" 这样的模板文件,还应该只负责从域模型中读取正确的数据(例如由控制器,至少)并将其呈现给用户(通过加载和呈现相应的模板文件)。因此,视图也应该将服务作为依赖项接收;甚至控制器收到的那些。