public static function createFromGlobals() { if (!isset($_SERVER['REQUEST_METHOD'], $_SERVER['HTTP_HOST'], $_SERVER['REQUEST_URI'])) { throw new HttpException('Missing required fields in global $_SERVER - [REQUEST_METHOD, HTTP_HOST, REQUEST_URI]'); } $method = strtolower($_SERVER['REQUEST_METHOD']); if (!in_array($method, self::METHODS)) { throw new HttpException('Unsupported request method ' . $method); } if ($method === 'get') { $data = $_GET; } else { if ($method === 'post') { $data = $_POST; } else { // PHP does not automatically populate $_PUT and $_DELETE variables $body = file_get_contents('php://input'); // HTTP_CONTENT_TYPE - PHP built-in server; CONTENT_TYPE - everything else $contentType = $_SERVER['HTTP_CONTENT_TYPE'] ?? $_SERVER['CONTENT_TYPE'] ?? ''; $contentType = strtolower($contentType); if (strpos($contentType, 'application/json') !== false) { $data = json_decode($body, true); } else { parse_str($body, $data); } } } return new static($method, Uri::createFromGlobals(), $data, $_FILES ?? [], $_SERVER['HTTP_REFERER'] ?? ''); }
var_dump('host=' . $uri->getHost()); var_dump('port=' . $uri->getPort()); var_dump('path=' . $uri->getPath()); var_dump('query=' . $uri->getQuery()); var_dump('query params=', $uri->getQueryParameters()); var_dump('fragment=' . $uri->getFragment()); echo $uri->getRelative(), PHP_EOL; echo $uri->setScheme('https'), PHP_EOL; echo $uri->setAuth(''), PHP_EOL; echo $uri->setAuth('j2'), PHP_EOL; echo $uri->setPort(80), PHP_EOL; echo $uri->setPort(7070), PHP_EOL; echo $uri->setHost('foobar.baz'), PHP_EOL; echo $uri->setPath('/wow'), PHP_EOL; echo $uri->setQueryParameter('ran', 't'), PHP_EOL; $uri2 = new Uri('/foo/bar'); var_dump('protocol=' . $uri2->getScheme()); var_dump('username='******'password='******'host=' . $uri2->getHost()); var_dump('port=' . $uri2->getPort()); var_dump('path=' . $uri2->getPath()); var_dump('query=' . $uri2->getQuery()); var_dump('query params=', $uri2->getQueryParameters()); var_dump('fragment=' . $uri2->getFragment()); $tryCatch = function (string $func, ...$params) use(&$uri2) { try { $uri2->{$func}(...$params); } catch (UriException $e) { echo $e->getMessage(), PHP_EOL; }