FrameworkDocs
PHP 8.4+ UIkit 3 FA 6 Pro
Die Klasse ist als final readonly deklariert – alle Properties sind schreibgeschützt und können nach der Konstruktion nicht mehr verändert werden. withAttribute() gibt immer einen neuen Klon zurück.

Properties (readonly)

PropertyTypBeschreibung
$methodstringHTTP-Methode in Großbuchstaben: GET, POST, PUT, PATCH, DELETE
$pathstringBereinigter URL-Pfad ohne Query-String, z.B. /users/42
$queryarrayQuery-Parameter ($_GET)
$bodyarrayPOST-Formulardaten ($_POST)
$headersarrayHTTP-Header in lowercase (z.B. content-type)
$cookiesarrayCookies ($_COOKIE)
$serverarrayServer-Variablen ($_SERVER)

Methoden

MethodeRückgabetypBeschreibung
withAttribute(string $key, mixed $value)selfGibt einen Klon mit zusätzlichem Attribut zurück. Wird intern für Route-Parameter genutzt.
getAttribute(string $key, mixed $default = null)mixedLiest ein Route-Attribut (z.B. URL-Parameter) aus.

Verwendung im Controller

PHP
class UserController
{
    public function show(Request $request, string $id): Response
    {
        // Route-Parameter (direkt als Funktionsargument)
        $userId = (int) $id;

        // Alternativ via getAttribute()
        $userId = (int) $request->getAttribute('id');

        // Query-String: /users/42?tab=profile
        $tab = $request->query['tab'] ?? 'overview';

        return Response::json(['id' => $userId, 'tab' => $tab]);
    }

    public function store(Request $request): Response
    {
        // POST-Daten
        $name  = $request->body['name']  ?? '';
        $email = $request->body['email'] ?? '';

        // Header lesen (lowercase)
        $contentType = $request->headers['content-type'] ?? '';
        $csrfToken   = $request->headers['x-csrf-token'] ?? '';

        // Cookies
        $sessionId = $request->cookies['PHPSESSID'] ?? '';

        return Response::json(['created' => true]);
    }
}

// Request manuell für Tests erstellen
$request = new Request(
    method:  'POST',
    path:    '/users',
    body:    ['name' => 'Max', 'email' => 'max@test.de'],
    headers: ['content-type' => 'application/json'],
);

Pfad-Bereinigung

Der Pfad wird automatisch bereinigt beim Erstellen des Request-Objekts:

PHP – Bereinigungslogik
// Null-Bytes werden entfernt (Injection-Schutz)
// Doppelte Slashes werden normalisiert
// URL-Encoding wird dekodiert

// /users//42     → /users/42
// /users%2F42    → /users/42
// /users\0/42    → /users/42