Symfony2中的SOA

时间:2015-07-31 12:43:29

标签: php symfony doctrine-orm soa

我目前正在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);
    }
}

我需要抛出每个异常可能有一个条件。

这是一个好方法吗?我对实施完全错了吗?

1 个答案:

答案 0 :(得分:2)

与控制器逻辑相关的所有内容(例如,接受请求,响应请求,创建表单,绑定参数,从db中提取实体(最好使用ParamConverter),获取和设置会话对象应该保留在控制器中,重定向等等。

其他所有内容都可以迁移到服务(或其他类)