如何从 Symfony 配置中的服务容器调用方法?

Sal*_*vat 3 php symfony

我在树枝模板中有一些变量,所以考虑使用全局范围。

config.yml
twig:
 globals:
  varA: "@wf.autoload.getA"
  varB: "@wf.autoload.getB"
Run Code Online (Sandbox Code Playgroud)

服务 yml我有:

services.yml
 wf.autoload:
  class: Scope\WfBundle\WfAutoloadService
  arguments: ["@doctrine.orm.entity_manager"]
Run Code Online (Sandbox Code Playgroud)

WfAutoloadService类具有用于获取变量的公共函数

    class WfAutloadService {
    ...
    public function getA(){
    return ...;
    }

    public function getB(){
    return ...
    }
    ...
    }
Run Code Online (Sandbox Code Playgroud)

我的想法行不通。的方法@=service(wf.autoload).getA()也行不通。

是否可以?还是坏主意和坏做法?

谢谢

maa*_*lls 5

如果 getA() 和 getB() 返回对象,则可以在配置服务时使用工厂:

services:
    wf.autoload:
        class: Scope\WfBundle\WfAutoloadService
        arguments: ["@doctrine.orm.entity_manager"]
    wf.autoload.getA:
        class:   A
        factory: ["@wf.autoload", getA]
Run Code Online (Sandbox Code Playgroud)

并设置全局树枝:

twig:
 globals:
  varA: "@wf.autoload.getA"
Run Code Online (Sandbox Code Playgroud)