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" 这样的模板文件,还应该只负责从域模型中读取正确的数据(例如由控制器,至少)并将其呈现给用户(通过加载和呈现相应的模板文件)。因此,视图也应该将服务作为依赖项接收;甚至控制器收到的那些。
我对 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" 这样的模板文件,还应该只负责从域模型中读取正确的数据(例如由控制器,至少)并将其呈现给用户(通过加载和呈现相应的模板文件)。因此,视图也应该将服务作为依赖项接收;甚至控制器收到的那些。