Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在Symfony';什么是YAML配置?_Php_Symfony - Fatal编程技术网

Php 如何在Symfony';什么是YAML配置?

Php 如何在Symfony';什么是YAML配置?,php,symfony,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:

我有一个使用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
除了请求没有正确创建之外,所有的工作都很完美,因为在PHP中,它应该这样调用:

$request = Request::createFromGlobals();

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

我可能错了,但我认为这需要一个工厂调用,而不是一个“调用”调用,比如

request:
    class: Symfony\Component\HttpFoundation\Request
    factory_class:  Symfony\Component\HttpFoundation\Request
    factory_method: createFromGlobals
有关工厂的更多信息,请参见。

我认为
“合成服务”
是您需要的:

合成服务是注入容器中的服务 而不是由容器创建


更多信息:

不要实例化第二个请求实例!都不将请求对象作为服务参数传递(您的服务将在请求范围内)。如果你需要请求对象,让你的服务订阅事件谁说他正在运行
HttpKernel
组件?@Qoop没错,我读这个问题的速度太快了,我马上就认为他在运行整个框架。是的,这就是通过静态方法创建服务的方法。但是,你应该提到,为请求这样做是错误的。如果我知道这是错误的,我会这么做的。请随意在评论中贴一些关于它的信息,我会更新我的“答案”。创建请求对象并不一定是错误的。是的,使用工厂是配置它的方法。