Heim >Backend-Entwicklung >PHP-Tutorial >symfony2 框架中,在controller 外我该怎么调用一个服务呢?
比如我定义了一个public 的服务A 名字为 service.one
在controller 中我们直接可以
$this->get('service.one')->×××××
但是如果我不是在 controller 呢 我该怎么做?
比如我定义了一个public 的服务A 名字为 service.one
在controller 中我们直接可以
$this->get('service.one')->×××××
但是如果我不是在 controller 呢 我该怎么做?
你必须使用方法将container
或container
的某个服务传入,才能调用。其实在controller
里的get
方法也是调用container
的get
方法。可以继承自ContainerAware
,使用setContainer
方法传入container
。
如果不在controller,那你在哪儿呢?如果是另外一个service,那么在定义service的时候,可以把A service当作参数传进去
在控制器中 $this->get('serviceName') 实际上是调用了 Container 容器,因此不管在不在 Controller 里,需要调用 Service 都需要 Container 容器,在 Symfony 中 Container 容器 ID 叫 servicecontainer,不管在哪里,你只需要注入 servicecontainer 就可以获取服务:
在 services.yml 里配置:
<code class="php">service.id: class: AppBundle\Form\YourServiceNamespace arguments: # 注入一个 **服务** (service) - @service_container # 注入一个 **参数** (parameter) - %parameterkey% # 注入一个 **字符串** (string) - "string"</code>