gpt4 book ai didi

php - 从服务中调用服务?

转载 作者:行者123 更新时间:2023-12-04 05:26:43 27 4
gpt4 key购买 nike

我试图在服务中调用从另一个服务调用另一个方法的方法。

当前类 -> 不同的类/服务 -> 到不同的类/服务

我可以成功调用初始服务,但是当该服务尝试调用其他服务时,我收到错误

Fatal error</b>:  Call to a member function get() on a non-object

下面是导致错误的代码:
$edmt = $this->get('endorsements');

以及服务声明:
endorsements:
class: EndorseMe\EndorsementBundle\Controller\DefaultController
arguments: [ @router, @service_container]

但是,为了使事情变得更棘手,此服务并不总是用作服务。它也是常规的 symfony Controller 。它需要能够双向工作

最佳答案

您应该将您的第二个服务作为参数传递给您的第一个服务:

endorsements:
class: EndorseMe\EndorsementBundle\Controller\DefaultController
arguments: [ @router, @service_container, @your_second_service ]

然后在您的第一个服务中:
protected $injectedService;

public function __construct(SecondServiceClass $injectedService)
{
$this->injectedService = $injectedService;
}

之后,您应该可以通过调用 $this->injectedService 来使用注入(inject)的服务。

看看 Referencing Services文档中的章节。

编辑:我认为不可能同时使用同一个类作为服务和 Controller 。我建议 define Controller as Service反而。最后,您会将第二个服务注入(inject)您的第一个服务,并将您的第一个服务注入(inject)您的 Controller 服务(总共三个服务)。

关于php - 从服务中调用服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13131700/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com