如何在 Symfony 的 YAML 配置中调用静态方法?

deb*_*ian 5 php symfony

我有一个使用 Symfony 组件的应用程序。一切都很顺利,直到我遇到困难,需要将 Symfony 的请求对象添加到依赖注入容器中。

这是我的配置:

parameters:
  config.project: %project_cfg%
  config.module: %module_cfg%
  config.mysql: %mysql_cfg%
  config.couch: %couch_cfg%
  request: %http_request%

services:
  request:
    class: Symfony\Component\HttpFoundation\Request
    calls:
      - [createFromGlobals]
  db:
    class: App\Core\AlarisDb
    arguments: ["%mysql_cfg%"]
  func:
    class: App\Core\AlarisFunctions
    calls:
      - [setTree, ["@tree"]]
  tree:
    class: App\Core\AlarisTree
Run Code Online (Sandbox Code Playgroud)

一切都很完美,除了请求没有正确创建,因为在 PHP 中应该这样调用:

$request = Request::createFromGlobals();
Run Code Online (Sandbox Code Playgroud)

而 YAML 配置将其称为对象的方法。有没有办法告诉它作为静态方法调用?

qoo*_*mao 4

我可能是错的,但我认为这需要工厂调用而不是“调用”调用,例如..

request:
    class: Symfony\Component\HttpFoundation\Request
    factory_class:  Symfony\Component\HttpFoundation\Request
    factory_method: createFromGlobals
Run Code Online (Sandbox Code Playgroud)

有关工厂的更多信息,请参阅文档