如何在 symfony 2.6 中的另一个服务中使用一个服务
how to use a service inside another service in symfony 2.6
我在 symfony 2.6 中设置了一个名为 ge_lib
的服务,如下所示
ge_lib:
class: GE\RestBundle\Services\GELib
arguments: [@session, @doctrine.orm.entity_manager, @manage_ge_proc]
inside GELib.php 我需要使用另一个服务的功能 manage_ge_proc
manage_ge_proc:
class: GE\RestBundle\Services\GEManageProcedure
arguments: [@doctrine.orm.entity_manager, @manage_ge_native_query]
如果我尝试以这种方式使用它,它不起作用
$emailInv = $this->get('manage_ge_proc');
$sendStatus = $emailInv->pSendGeneralEmail(.....);
它给出了错误提示,无法找到任何具有该名称的 get 函数。通常这 -> $this->get('manage_ge_proc');
在任何 controller.But 中都有效 我如何在服务中使用它?
我试过$this->getContainer()->get('manage_ge_proc');
但是没用。
此调用正在从 DI 容器中获取服务,您的服务中没有该服务
$this->get('manage_ge_proc');
它在控制器中工作,因为 DI 容器会自动注入到那里。
因为你有这一行 services.yml
,它告诉 Symfony 将 @manage_de_proc
服务注入 ge_lib
构造函数
arguments: [@session, @doctrine.orm.entity_manager, @manage_ge_proc]
你应该能够像这样从构造函数中选择 @manage_de_proc
:
public function __construct(
Session $session,
EntityManager $entityManager,
GEManageProcedure $manageDeProc
)
{
//... whatever you do in your constructor
$this->manageDeProc = $manageDeProc;
}
我在 symfony 2.6 中设置了一个名为 ge_lib
的服务,如下所示
ge_lib:
class: GE\RestBundle\Services\GELib
arguments: [@session, @doctrine.orm.entity_manager, @manage_ge_proc]
inside GELib.php 我需要使用另一个服务的功能 manage_ge_proc
manage_ge_proc:
class: GE\RestBundle\Services\GEManageProcedure
arguments: [@doctrine.orm.entity_manager, @manage_ge_native_query]
如果我尝试以这种方式使用它,它不起作用
$emailInv = $this->get('manage_ge_proc');
$sendStatus = $emailInv->pSendGeneralEmail(.....);
它给出了错误提示,无法找到任何具有该名称的 get 函数。通常这 -> $this->get('manage_ge_proc');
在任何 controller.But 中都有效 我如何在服务中使用它?
我试过$this->getContainer()->get('manage_ge_proc');
但是没用。
此调用正在从 DI 容器中获取服务,您的服务中没有该服务
$this->get('manage_ge_proc');
它在控制器中工作,因为 DI 容器会自动注入到那里。
因为你有这一行 services.yml
,它告诉 Symfony 将 @manage_de_proc
服务注入 ge_lib
构造函数
arguments: [@session, @doctrine.orm.entity_manager, @manage_ge_proc]
你应该能够像这样从构造函数中选择 @manage_de_proc
:
public function __construct(
Session $session,
EntityManager $entityManager,
GEManageProcedure $manageDeProc
)
{
//... whatever you do in your constructor
$this->manageDeProc = $manageDeProc;
}