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');
}
}
答案 0 :(得分:2)
如果您从控制器请求服务,您也可以将控制器设置为服务。然后,您可以使用依赖项注入将员工存储库服务传递给它。
这样你就不会在控制器中有字符串引用,而是在配置中。
http://symfony.com/doc/current/cookbook/controller/service.html