Signatur
Beschreibung
Yaf_Response_Http ist die Standard-Antwortklasse des Yaf-Frameworks (Yet Another Framework) für HTTP-Anfragen. Sie erbt von Yaf_Response_Abstract und erweitert diese um HTTP-spezifische Funktionalitäten wie das Setzen von HTTP-Headern und HTTP-Statuscodes.
Die Klasse sammelt während der Anwendungsverarbeitung alle Ausgaben im Body-Puffer, bevor sie abschließend an den Client gesendet wird. Dies erlaubt eine saubere Trennung zwischen der Antwort-Aufbereitung und dem tatsächlichen Senden der Daten – Controller und Plugins können die Antwort modifizieren, bevor sie ausgeliefert wird.
Typischerweise wird eine Instanz dieser Klasse automatisch von Yaf_Application erzeugt und steht über den Dispatcher zur Verfügung. Entwickler können sie nutzen, um gezielt Header zu setzen (z. B. für Redirects oder Content-Type-Angaben), den HTTP-Statuscode anzupassen oder Body-Segmente hinzuzufügen.
- Header verwalten: Mit
setHeader()/getHeader()lassen sich HTTP-Response-Header steuern. - Body verwalten: Mit
setBody(),appendBody()undprependBody()wird der Antwort-Inhalt aufgebaut. - Senden:
response()schickt Header und Body an den Client.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $content | string | Optionaler initialer Body-Inhalt der HTTP-Antwort, der beim Konstruieren übergeben werden kann. |
Rückgabewert
Beispiele
HTTP-Header und Body setzen
<?php
// Innerhalb eines Yaf-Controllers
class IndexController extends Yaf_Controller_Abstract {
public function indexAction() {
/** @var Yaf_Response_Http $response */
$response = $this->getResponse();
// Content-Type-Header setzen
$response->setHeader('Content-Type', 'application/json');
// HTTP-Statuscode auf 200 setzen
$response->setHeader('HTTP/1.1', '200 OK');
// Body-Inhalt definieren
$data = ['status' => 'ok', 'message' => 'Hallo Welt'];
$response->setBody(json_encode($data));
// Automatisches Rendering deaktivieren
return false;
}
}
Redirect mit HTTP 302
<?php
class UserController extends Yaf_Controller_Abstract {
public function loginAction() {
$isLoggedIn = false; // Beispiel-Prüfung
if (!$isLoggedIn) {
/** @var Yaf_Response_Http $response */
$response = $this->getResponse();
// Redirect-Header setzen
$response->setRedirect('https://example.com/login');
return false;
}
// Normaler Anwendungsablauf ...
}
}
Body-Segmente kombinieren
<?php
$response = new Yaf_Response_Http();
// Haupt-Body setzen
$response->setBody('<main>Inhalt</main>');
// Header-Bereich voranstellen
$response->prependBody('<header>Kopfbereich</header>');
// Footer anhängen
$response->appendBody('<footer>Fußbereich</footer>');
// Gesamten Body ausgeben
echo $response->getBody();
// Wichtig · Fallstricke
Sicherheitshinweis: Beim Setzen von HTTP-Headern über setHeader() sollten Benutzereingaben niemals ungeprüft übernommen werden, da dies zu Header-Injection-Angriffen führen kann. Alle Werte, die in Header einfließen, müssen vorher validiert und bereinigt werden.
Yaf-Besonderheit: Yaf_Response_Http ist eine C-Extension-Klasse. Ihre Methoden sind in der Yaf-Extension implementiert und stehen nur zur Verfügung, wenn die yaf-Extension in PHP geladen ist (extension=yaf.so in der php.ini).
Body-Segmente: Der Body kann in mehrere benannte Segmente aufgeteilt werden. setBody($content, $name) ermöglicht das Befüllen einzelner Segmente, getBody($name) das gezielte Abrufen.