Symfony有一个非常明确的代码示例,说明如何覆盖请求类,但我不知道在我的应用程序中应该放置它。我在控制器操作中从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
);
});
http://symfony.com/doc/current/components/http_foundation/introduction.html#overriding-the-request
答案 0 :(得分:2)
在给出的示例中,在调用Request::setFactory
方法之前立即调用Request::createFromGlobals
方法。这意味着调用此方法的适当位置将在前端控制器中,例如, app.php,app_dev.php和用作前端控制器的任何其他文件。
实际上Request::createFromGlobals
方法和Request::create
方法检查Request::setFactory
方法是否设置了可调用对象,如果是,则使用此可调用对象创建一个对象应该扩展Request类。