Start · Sprachen · PHP · Referenz · Yaf_Response_Http

Yaf_Response_Http

Klasse

Repräsentiert eine HTTP-Antwort im Yaf-Framework und verwaltet HTTP-Header, Body-Inhalte und den HTTP-Statuscode.

seit PHP 2.0.0 Kategorie: misc

Signatur

class Yaf_Response_Http extends Yaf_Response_Abstract

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() und prependBody() 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

Typ

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;
    }
}
{"status":"ok","message":"Hallo Welt"}

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();
<header>Kopfbereich</header><main>Inhalt</main><footer>Fußbereich</footer>

// 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.