[HttpFoundation] Complete Request::overrideGlobals

This commit is contained in:
stealth35 2012-03-11 12:02:08 +01:00
parent 4bb65c7057
commit b217897ecb

View File

@ -397,7 +397,8 @@ class Request
/**
* Overrides the PHP global variables according to this request instance.
*
* It overrides $_GET, $_POST, $_REQUEST, $_SERVER, $_COOKIE, and $_FILES.
* It overrides $_GET, $_POST, $_REQUEST, $_SERVER, $_COOKIE.
* $_FILES is never override, see rfc1867
*
* @api
*/
@ -407,7 +408,6 @@ class Request
$_POST = $this->request->all();
$_SERVER = $this->server->all();
$_COOKIE = $this->cookies->all();
// FIXME: populate $_FILES
foreach ($this->headers->all() as $key => $value) {
$key = strtoupper(str_replace('-', '_', $key));
@ -418,9 +418,15 @@ class Request
}
}
// FIXME: should read variables_order and request_order
// to know which globals to merge and in which order
$_REQUEST = array_merge($_GET, $_POST);
$request = array('g' => $_GET, 'p' => $_POST, 'c' => $_COOKIE);
$request_order = ini_get('request_order') ?: ini_get('variable_order');
$request_order = preg_replace('#[^cgp]#', '', strtolower($request_order)) ?: 'gp';
$_REQUEST = array();
foreach (str_split($request_order) as $order) {
$_REQUEST = array_merge($_REQUEST, $request[$order]);
}
}
/**