比如我定义了一个public 的服务A 名字为 service.one
在controller 中我们直接可以
$this->get('service.one')->×××××
但是如果我不是在 controller 呢 我该怎么做?
迷茫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"
PHP中文网2017-04-10 14:55:29
你必须使用方法将container
或container
的某个服务传入,才能调用。其实在controller
里的get
方法也是调用container
的get
方法。可以继承自ContainerAware
,使用setContainer
方法传入container
。