在symfony中避免依赖注入中的容器字符串

时间:2015-06-11 13:26:56

标签: php symfony dependency-injection

symfony和php新手。我能够成功定义服务并将doctrine实体管理器注入其中。它工作正常但在初始化期间我必须传递一个包含服务名称的字符串,如下所示:

    $eRep = $this->container->get('employee_repository');

这可以避免吗?这可以转换为更优雅的东西,如

   $eRep = $this->container->getEmployeeRepository();

该服务定义为:

services:
employee_repository:
    class: AppBundle\Repository\EmployeeRepository
    arguments: [@doctrine.orm.entity_manager]               

为noob问题道歉。 的修改

我是否可以访问另一个类中的服务容器,如EmployeeEnvelope并调用如下:

class EmployeeEnvelope{

    public function getEmployeeRepository()
    {               
        return $this->container->get('employee_repository');
    } 
}

1 个答案:

答案 0 :(得分:2)

如果您从控制器请求服务,您也可以将控制器设置为服务。然后,您可以使用依赖项注入将员工存储库服务传递给它。

这样你就不会在控制器中有字符串引用,而是在配置中。

http://symfony.com/doc/current/cookbook/controller/service.html