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;
 }