symfony2 框架中,在controller 外我该怎么调用一个服务呢?
程序员文章站
2024-04-05 22:04:37
...
比如我定义了一个public 的服务A 名字为 service.one
在controller 中我们直接可以
$this->get('service.one')->×××××
但是如果我不是在 controller 呢 我该怎么做?
在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 里配置:
service.id:
class: AppBundle\Form\YourServiceNamespace
arguments:
# 注入一个 **服务** (service)
- @service_container
# 注入一个 **参数** (parameter)
- %parameterkey%
# 注入一个 **字符串** (string)
- "string"