You are here

public function Request::overrideGlobals in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/symfony/http-foundation/Request.php \Symfony\Component\HttpFoundation\Request::overrideGlobals()

Overrides the PHP global variables according to this request instance.

It overrides $_GET, $_POST, $_REQUEST, $_SERVER, $_COOKIE. $_FILES is never overridden, see rfc1867

File

vendor/symfony/http-foundation/Request.php, line 512

Class

Request
Request represents an HTTP request.

Namespace

Symfony\Component\HttpFoundation

Code

public function overrideGlobals() {
  $this->server
    ->set('QUERY_STRING', static::normalizeQueryString(http_build_query($this->query
    ->all(), null, '&')));
  $_GET = $this->query
    ->all();
  $_POST = $this->request
    ->all();
  $_SERVER = $this->server
    ->all();
  $_COOKIE = $this->cookies
    ->all();
  foreach ($this->headers
    ->all() as $key => $value) {
    $key = strtoupper(str_replace('-', '_', $key));
    if (in_array($key, array(
      'CONTENT_TYPE',
      'CONTENT_LENGTH',
    ))) {
      $_SERVER[$key] = implode(', ', $value);
    }
    else {
      $_SERVER['HTTP_' . $key] = implode(', ', $value);
    }
  }
  $request = array(
    'g' => $_GET,
    'p' => $_POST,
    'c' => $_COOKIE,
  );
  $requestOrder = ini_get('request_order') ?: ini_get('variables_order');
  $requestOrder = preg_replace('#[^cgp]#', '', strtolower($requestOrder)) ?: 'gp';
  $_REQUEST = array();
  foreach (str_split($requestOrder) as $order) {
    $_REQUEST = array_merge($_REQUEST, $request[$order]);
  }
}