我目前正在Symfony2中实施面向服务的架构,我想对此进行推荐。
我想知道我需要在Controller中处理什么,以及我需要在服务中处理什么。
一个极端的解决方案是将Request
传递给服务,它将实现所有逻辑(主要是Doctrine,因为我正在开发API而不是"完整&#34 ;例如,使用Twig的站点),然后在控制器中发送回Response
。
这意味着我必须创建这样的代码:
在服务中:
if (null === $entity) {
throw new \Exception('Not found.', self::NOT_FOUND);
}
在控制器中:
try {
$service->doThings();
}
catch (\Exception $e) {
if ($e->getCode() === Service::NOT_FOUND) {
return new Response($e->getMessage(), 404);
}
}
我需要抛出每个异常可能有一个条件。
这是一个好方法吗?我对实施完全错了吗?
答案 0 :(得分:2)
与控制器逻辑相关的所有内容(例如,接受请求,响应请求,创建表单,绑定参数,从db中提取实体(最好使用ParamConverter),获取和设置会话对象应该保留在控制器中,重定向等等。
其他所有内容都可以迁移到服务(或其他类)