Skip to content

Responses

Die abstrakte Klasse RHRZ\Framework\Response verkörpert eine HTTP-Response, die als Antwort auf einen Request an den Client gesendet wird. Im Framework sind folgende polymorphe Klassen enthalten, die von dieser Klasse erben.

Nutzung

Die Klasse RHRZ\Framework\Response besitzt diverse statische Methoden zum Erstellen konkreter Response-Instanzen.

RawResponse

Response::raw($data = null) erstellt eine RawResponse. Die übergebenen Daten werden ohne weitere Verarbeitung ausgegeben.

ViewResponse

Response::view(string $file, array $data = []) erstellt eine ViewResponse. Der Parameter $file ist der Name der Twig-Datei, die gerendert werden soll, relativ zum Ordner views.

JsonResponse

Insbesondere bei der Entwicklung einer API werden die Daten nicht als HTML, sondern als JSON zurückgegeben. Response::json($data = []) erstellt eine JsonResponse.

Um mit dem Framework entwickelte Schnittstellen zu vereinheitlichen, werden die Daten einer JsonResponse in einem Wrapper gekapselt. Dieser enthält folgende Attribute.

  • error enthält eine Fehlermeldung, falls eine Exception aufgetreten ist.
  • data enthält die eigentlichen Daten.
  • custom enthält zusätzliche Daten, die der Entwickler setzen kann.
  • validation enthält Validierungsfehler und die Formulardaten des vorherigen Requests.
  • meta enthält Meta-Informationen zu Request und Response. Weitere Informationen können vom Entwickler gesetzt werden.
  • debug enthält Informationen, die beim Debugging hilfreich sein können. Dieses Attribut ist nur bei aktiviertem Debug-Modus vorhanden.

Die Klasse JsonResponse verfügt zusätzlich zur Elternklasse über folgende Methoden.

  • getMeta(string $key) gibt die Metadaten zu einem bestimmten $key zurück.
  • setMeta(string $key, $val) setzt die Metadaten zu einem bestimmten $key und gibt die aktuelle Instanz zurück.
  • getCustom(string $key) gibt die zusätzlichen Daten zu einem bestimmten $key zurück.
  • setCustom(string $key, $val) setzt die zusätzlichen Daten zu einem bestimmten $key und gibt die aktuelle Instanz zurück.

FileResponse

Mit folgenden Methoden kann eine FileResponse erstellt werden.

  • Response::file(string $path, string $name = null) sendet eine Datei an den Client. Falls der Browser dies unterstützt, wird die Datei im Browser angezeigt, andernfalls als Download angeboten.
  • Response::download(string $path, string $name = null) forciert die Rückgabe als Download.

Der Parameter $path ist der Pfad der zu sendenden Datei. Über den optionalen Parameter $name kann der Datei ein anderer Name gegeben werden, falls sie zum Download angeboten wird.

RedirectResponse

Ein Redirect dient dazu, den Client auf eine andere URL weiterzuleiten. Mit folgenden Methoden kann eine RedirectResponse erstellt werden.

  • Response::redirect(string $route, $data = []) ist ein Alias für redirectRoute.
  • Response::redirectRoute(string $route, $data = []) leitet auf eine Route innerhalb der Anwendung weiter. Der Parameter $data verhält sich wie bei der Methode App::route (siehe Pfade generieren).
  • Response::redirectPath(string $path) leitet auf einen Pfad innerhalb der Anwendung weiter. Der Teil der URL bis zum Root-Verzeichnis wird automatisch ergänzt.
  • Response::redirectUrl(string $url) leitet auf eine URL weiter, bei der es sich auch um eine andere Domain handeln kann.
  • Response::redirectSame() leitet auf den Pfad des aktuellen Requests weiter.

Der Statuscode für Redirects ist standardmäßig 303 (See Other). Dieser Code wird üblicherweise nach einem erfolgreichen POST-Request verwendet. Bei Inhalten, die dauerhaft unter einer anderen Adresse zu finden sind, sollte 301 (Moved Permanently) verwendet werden. Der Statuscode kann mit der Methode setStatus(int $code) gesetzt werden.

Methoden

Die Klasse Response und ihre Kindklassen verfügen über folgende Methoden.

  • getStatus(): int liefert den Statuscode der HTTP Response zurück. Der Standardwert ist 200.
  • setStatus(int $code) setzt den Statuscode und gibt die aktuelle Instanz zurück.
  • getData() gibt die Daten der Response zurück.
  • getClass() gibt den Klassennamen der Response zurück.
  • getHeaders() gibt die Response-Header zurück, siehe headers_list().
  • setHeader(string $header, string $value, bool $replace = true) setzt einen Response-Header mit der Funktion header() und gibt die aktuelle Instanz zurück.
  • send() trifft je nach Art der Response letzte Vorbereitungen und sendet das Ergebnis an den Client. Diese abstrakte Methode muss von den Kindklassen implementiert werden.