scheme = $requestUrl['scheme']; $this->host = $requestUrl['host']; $this->path = $requestUrl['path'] ?? '/'; $this->query = []; if (isset($requestUrl['query'])) { foreach (explode('&', $requestUrl['query']) as $queryString) { $query = explode('=', $queryString); if (empty($query[1])) { $this->query['input'] = $query[0]; } else { $this->query[$query[0]] = $query[1]; } } } } /** * @param resource $resource */ public static function fromResource($resource): static { return Request::fromString(fread($resource, 1024)); } public static function fromString(string $string): static { $requestUrl = explode("\r\n", $string)[0] ?? ''; return new Request($requestUrl); } public function getPath(): string { return $this->path; } public function getQuery(): array { return $this->query; } public function get(string $key): mixed { return $this->query[$key] ?? null; } public function set(string $key, string $value): self { $this->query[$key] = $value; return $this; } }