search

Home  >  Q&A  >  body text

php - symfony2 框架中,在controller 外我该怎么调用一个服务呢?

比如我定义了一个public 的服务A 名字为 service.one
在controller 中我们直接可以
$this->get('service.one')->×××××
但是如果我不是在 controller 呢 我该怎么做?

PHP中文网PHP中文网2821 days ago284

reply all(3)I'll reply

  • 迷茫

    迷茫2017-04-10 14:55:29

    在控制器中 $this->get('serviceName') 实际上是调用了 Container 容器,因此不管在不在 Controller 里,需要调用 Service 都需要 Container 容器,在 Symfony 中 Container 容器 ID 叫 servicecontainer,不管在哪里,你只需要注入 servicecontainer 就可以获取服务:

    在 services.yml 里配置:

    service.id:
         class: AppBundle\Form\YourServiceNamespace
         arguments:
             # 注入一个 **服务** (service)
             - @service_container
             # 注入一个 **参数** (parameter)
             - %parameterkey%
             # 注入一个 **字符串** (string)
             - "string"

    reply
    0
  • PHP中文网

    PHP中文网2017-04-10 14:55:29

    你必须使用方法将containercontainer的某个服务传入,才能调用。其实在controller里的get方法也是调用containerget方法。可以继承自ContainerAware,使用setContainer方法传入container

    reply
    0
  • 迷茫

    迷茫2017-04-10 14:55:29

    如果不在controller,那你在哪儿呢?如果是另外一个service,那么在定义service的时候,可以把A service当作参数传进去

    reply
    0
  • Cancelreply