Php 重写Symfony请求类-将重写代码放置在何处?

Php 重写Symfony请求类-将重写代码放置在何处?,php,symfony,request,Php,Symfony,Request,Symfony有一个关于如何覆盖request类的非常清晰的代码示例,但我不知道应该在我的应用程序中放置它。我在控制器操作中接收到来自Symfony的请求对象,并希望获得SpecialRequest对象 我已经尝试了kernel.request侦听器,但这似乎太晚了。有没有适合这种初始化代码的地方 Request::setFactory(function ( array $query = array(), array $request = array(), array $

Symfony有一个关于如何覆盖request类的非常清晰的代码示例,但我不知道应该在我的应用程序中放置它。我在控制器操作中接收到来自Symfony的请求对象,并希望获得SpecialRequest对象

我已经尝试了kernel.request侦听器,但这似乎太晚了。有没有适合这种初始化代码的地方

Request::setFactory(function (
    array $query = array(),
    array $request = array(),
    array $attributes = array(),
    array $cookies = array(),
    array $files = array(),
    array $server = array(),
    $content = null
) {
    return SpecialRequest::create(
        $query,
        $request,
        $attributes,
        $cookies,
        $files,
        $server,
        $content
    );
});

在给定的示例中,在调用
Request::createFromGlobals
方法之前,会立即调用
Request::setFactory
方法。这意味着调用此方法的适当位置将位于前端控制器中,例如app.php、app_dev.php和用作前端控制器的任何其他文件

事实上,
Request::createFromGlobals
方法和
Request::create
方法会检查
Request::setFactory
方法是否设置了可调用项,如果是,它们会使用该可调用项创建一个应该扩展Request类的对象