Symfony共享控制器对象



我在Symfony上启动了一个项目,而不是从头开始。我想得到你对我在这个应用程序中发现的编码方式的反馈。

该应用程序作为许多业务类。其中一些类需要与实体管理器、翻译器、会话中存储的一些数据一起工作。。。控制器中可用的所有对象。

因此,其中一些类在构造函数中接收控制器对象,将其存储为成员,然后在方法中使用。一种自定义注射。

下面是一个代码示例(不完整,只是为了显示机制):

在控制器中:

  /**
 * @Route("/gac/print/{param}", name="_gac_print")
 * @Template()
 */
 public function printAction($param)
 {
    $printerTool = new PrinterTool($this); //PrinterTool is a custom business class  
    $printerTool->printToFile($param);    
 }

商务舱:

类打印机工具{

private $controller;
public function __construct($controller)
{
    $this->controller = $controller;
    $user = $this->controller->get('security.context')->getToken()->getUser();
    $this->userId = $user->getId();
}
public function printToFile($param)
{
    $trans = $this->controller->get('translator');
    $em = $this->controller->getDoctrine()->getEntityManager();
    //Use those to do some business logic
}

};

我是否必须考虑使用正确的注入来重写这段代码,或者这是可以保留的东西。

谢谢!

这就是Symfony2的全部。正确使用驾驶员信息中心,直到你的代码库不太大!传递控制器对象实际上是一个坏习惯。在这里,您的PrinterTool服务只需要注入translatorsecurity.context服务。

最新更新