使用Symfony2服务的最佳方式是什么

时间:2015-08-05 12:56:28

标签: php symfony instance

我有一个庞大的Symfony项目。我创建了许多服务和子服务来覆盖控制器和服务代码。

在我的代码中,我用以下方法实例化这些服务:

function someRandomFunction(){
     window.location.href = document.getElementById("search_bar").value + ".html";
     return false;
}

我的一位同事使用$this->get('MyServiceName')->myMethod($foo); 关键字来实例化该类:

new

所以我想知道,这是最佳做法吗?我应该重写那段代码吗?这种代码对应用程序的可维护性和性能有什么影响?

2 个答案:

答案 0 :(得分:3)

如果服务是在Ioc容器中定义的,那么一定要从那里使用它,因为它将由容器构造。它负责从开发人员那里实例化新类。如果显式依赖项发生更改,您只需要在容器中更改它们,而不是在整个项目代码中查找它们。在大多数情况下,这也具有性能优势,因为某些类只需要实例化一次。无论如何,请与您的同事交谈,为什么他这样做。

答案 1 :(得分:2)

始终使用第一种方式(即使用服务容器),因为使用Symfony的依赖注入,您无需担心依赖性和/或参数;我已经从不使用第二种方式(即使用new关键字“手动”实例化服务)并且我很确定这是最糟糕的方式。

顺便说一下,你应该看看Fabien Potencier的official "best practices" guidethese blog posts