public static function createFromEnvironment() { $request = new self(); $request->setProtocol(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on'); $request->setMethod($_SERVER['REQUEST_METHOD']); $request->setHttpProtocol($_SERVER['SERVER_PROTOCOL']); $request->setHostName($_SERVER['HTTP_HOST']); $queryStart = strpos($_SERVER['REQUEST_URI'], '?'); if ($queryStart !== false) { $request->setUri(substr($_SERVER['REQUEST_URI'], 0, $queryStart)); } else { $request->setUri($_SERVER['REQUEST_URI']); } $request->setQueryString($_SERVER['QUERY_STRING']); $request->_setPostParameters($_POST); $headers = array(); foreach ($_SERVER as $name => $value) { if (substr($name, 0, 5) !== 'HTTP_') { continue; } $headerName = str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5))))); $headers[$headerName] = $value; } $request->setHeaders($headers); return $request; }