Example #1
0
 /**
  * Wrapper method to create a new request from PHP superglobals.
  *
  * Uses the $_GET, $_POST, $_FILES, $_COOKIE, $_SERVER ands $_ENV data to construct
  * the request.
  *
  * @return Request
  */
 public static function createFromGlobals() : Request
 {
     $request = new Request();
     $request->_environment = $_SERVER + $_ENV;
     $request->queryArgs = $_GET;
     $request->_bodyStream = new LazyOpenStream('php://input', 'r+');
     $data = $_POST;
     $method = $request->env('REQUEST_METHOD');
     if (in_array($method, ['PUT', 'DELETE', 'PATCH']) && strpos($request->contentType(), 'application/x-www-form-urlencoded') === 0) {
         $data = $request->_bodyStream->getContents();
     }
     parse_str($data, $data);
     if ($request->env('HTTP_X_HTTP_METHOD_OVERRIDE')) {
         $data['_method'] = $request->env('HTTP_X_HTTP_METHOD_OVERRIDE');
     }
     $request->_environment['ORIGINAL_REQUEST_METHOD'] = $method;
     if (isset($data['_method'])) {
         $request->_environment['REQUEST_METHOD'] = $data['_method'];
         unset($data['_method']);
     }
     $request->data = $data;
     $request->_cookies = $_COOKIE;
     $request->_uri = new Uri(self::_url());
     foreach ($_FILES as $filename => $file) {
         $fileObject = new UploadedFile($file['tmp_name'], $file['name'], $file['type'], $file['size'], $file['error']);
         $request->_files[$filename] = $fileObject;
     }
     $request->header(getallheaders());
     return $request;
 }