public function testCreateFromGlobal() { $_FILES = ['myfile' => ['name' => 'someimage.jpg', 'type' => 'image/jpeg', 'tmp_name' => '/tmp/phpM0Jr9t', 'error' => 0, 'size' => 190414]]; $myFile = new UploadedFile('/tmp/phpM0Jr9t', 190414, 0, 'someimage.jpg', 'image/jpeg'); $expected = ['myfile' => $myFile]; $uploadedFiles = UploadedFile::createFromGlobal(); $this->assertEquals($expected, $uploadedFiles); $_FILES = ['files' => ['name' => [0 => 'someimage1.jpg', 1 => 'someimage2.jpg'], 'type' => [0 => 'image/jpeg', 1 => 'image/png'], 'tmp_name' => [0 => '/tmp/phpM0Jr9t', 1 => '/tmp/phpMFKe87'], 'error' => [0 => 0, 1 => 0], 'size' => [0 => 190414, 1 => 12124]]]; $expected = ['files' => [new UploadedFile('/tmp/phpM0Jr9t', 190414, 0, 'someimage1.jpg', 'image/jpeg'), new UploadedFile('/tmp/phpMFKe87', 12124, 0, 'someimage2.jpg', 'image/png')]]; $uploadedFiles = UploadedFile::createFromGlobal(); $this->assertEquals($expected, $uploadedFiles); }
/** * Create a request from the superglobal values * * @return ServerRequest */ public static function createFromGlobal() { $method = isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] : 'GET'; $stream = fopen('php://input', 'r'); $streamObject = new Stream($stream); $headers = []; if (function_exists('apache_request_headers')) { $headers = call_user_func('apache_request_headers'); } else { foreach ($_SERVER as $key => $value) { if (substr($key, 0, 5) === "HTTP_") { $key = str_replace(" ", "-", ucwords(strtolower(str_replace("_", " ", substr($key, 5))))); $headers[$key] = $value; } elseif (strncmp($key, 'CONTENT_', 8) === 0) { $new_key = str_replace(" ", "-", ucwords(strtolower(str_replace("_", " ", $key)))); $headers[$new_key] = $_SERVER[$key]; } } if (isset($_SERVER['PHP_AUTH_USER'])) { $pass = isset($_SERVER['PHP_AUTH_PW']) ? $_SERVER['PHP_AUTH_PW'] : ''; $headers['AUTHORIZATION'] = 'Basic ' . base64_encode($_SERVER['PHP_AUTH_USER'] . ':' . $pass); } } $request = new static($method, Uri::createFromGlobals(), $streamObject, $headers, $_SERVER, $_COOKIE, UploadedFile::createFromGlobal()); return $request->withQueryParams($_GET)->withParsedBody($_POST); }