比如我定义了一个public 的服务A 名字为 service.one 在controller 中我们直接可以 $this->get('service.one')->××××× 但是如果我不是在 controller 呢 我该怎么做?
认证0级讲师
在控制器中 $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"
你必须使用方法将container或container的某个服务传入,才能调用。其实在controller里的get方法也是调用container的get方法。可以继承自ContainerAware,使用setContainer方法传入container。
container
controller
get
ContainerAware
setContainer
如果不在controller,那你在哪儿呢?如果是另外一个service,那么在定义service的时候,可以把A service当作参数传进去
在控制器中 $this->get('serviceName') 实际上是调用了 Container 容器,因此不管在不在 Controller 里,需要调用 Service 都需要 Container 容器,在 Symfony 中 Container 容器 ID 叫 servicecontainer,不管在哪里,你只需要注入 servicecontainer 就可以获取服务:
在 services.yml 里配置:
你必须使用方法将
container
或container
的某个服务传入,才能调用。其实在controller
里的get
方法也是调用container
的get
方法。可以继承自ContainerAware
,使用setContainer
方法传入container
。如果不在controller,那你在哪儿呢?如果是另外一个service,那么在定义service的时候,可以把A service当作参数传进去