繁体   English   中英

Symfony / MVC写瘦控制器

[英]Symfony / MVC write thin controllers

我对Symfony 2控制器的构造有疑问。 当我要处理表单时,我创建了一个单独的表单处理程序来处理该表单,并在我的控制器中调用此处理程序:

public function registerAction()
{
  $formHandler = $this->container->get('fos_user.registration.form.handler');
  $confirmationEnabled = $this->container->getParameter('fos_user.registration.confirmation.enabled');
  $process = $formHandler->process($confirmationEnabled);
  return new JsonResponse($process);
}

我是否也应该使用这种方法为仅包含业务逻辑但不验证表单的Controller创建Handler类?

例如,当我将逻辑外包给单独的处理程序时,我用于注册确认的Controller动作如下所示:

public function confirmAction($token)
{
    $formHandler = $this->container->get('acme.register_confirm.handler');
    $process = $formHandler->process($token);
    return new JsonResponse($process);
}

我将处理此服务的处理方法中的逻辑。

还是我应该让逻辑进入控制器,而不创建另一个单独的处理程序类?

如果我采用这种方法,几乎​​所有控制器都将看起来相同:

1)获取表单处理程序2)调用处理程序的处理方法3)返回响应

第二种方法是更好的做法。 业务逻辑应始终在服务内部。 这使您可以更好地分离关注点 ,并使您的代码更具可重用性和可测试性。 如果您致电服务handler ,则MyFancyBusinessLogicService完全由您决定。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM