method = strtoupper($method); $this->path = parse_url($uri, PHP_URL_PATH) ?? '/'; $this->postData = $postData ?: $_POST; } /** * Gibt die HTTP-Methode zurück. * * @return string */ public function getMethod(): string { return $this->method; } /** * Gibt den Pfad der Anfrage zurück. * * @return string */ public function getPath(): string { return $this->path; } /** * Gibt einen POST-Wert anhand des Schlüssels zurück. * * @param string $key Schlüssel im POST-Array * @param mixed $default Optionaler Standardwert * @return mixed */ public function getPost(string $key, $default = null): mixed { return $this->postData[$key] ?? $default; } /** * Gibt alle POST-Daten als Array zurück. * * @return array */ public function allPost(): array { return $this->postData; } /** * Gibt einen Query-Parameter anhand des Schlüssels zurück. * * @param string $key Schlüssel im Query-String * @param mixed $default Optionaler Standardwert * @return mixed */ public function getQuery(string $key, $default = null): mixed { $query = []; parse_str(parse_url($this->path, PHP_URL_QUERY) ?? '', $query); return $query[$key] ?? $default; } /** * Gibt einen HTTP-Header zurück. * * @param string $key Header-Name (z.B. 'Content-Type') * @return string|null */ public function getHeader(string $key): ?string { $headerKey = 'HTTP_' . strtoupper(str_replace('-', '_', $key)); return $_SERVER[$headerKey] ?? null; } /** * Gibt den rohen Anfrage-Body zurück. * * @return string */ public function getRawInput(): string { return file_get_contents('php://input'); } /** * Gibt den Anfrage-Body als assoziatives Array zurück (JSON). * * @return array */ public function getJson(): array { return json_decode($this->getRawInput(), true) ?? []; } }