Start · Sprachen · PHP · Referenz · Yaf_Response_Abstract

Yaf_Response_Abstract

Klasse

Abstrakte Basisklasse für Antwortobjekte im Yaf-Framework, die HTTP-Antworten kapselt und verwaltet.

seit PHP 2.0.0 Kategorie: misc

Signatur

abstract class Yaf_Response_Abstract

Beschreibung

Yaf_Response_Abstract ist die abstrakte Basisklasse für alle Antwortobjekte innerhalb des Yet Another Framework (Yaf). Sie stellt die gemeinsame Schnittstelle und Grundfunktionalität für HTTP-Antworten bereit, wie das Verwalten von Antwortheadern, Statuscodes und dem Antwortkörper.

Konkrete Implementierungen wie Yaf_Response_Http (für Web-Anfragen) und Yaf_Response_Cli (für Kommandozeilen-Anwendungen) erweitern diese abstrakte Klasse. Im normalen Anwendungsablauf wird das Antwortobjekt automatisch durch den Yaf_Application-Dispatcher erzeugt und verwaltet – ein manuelles Erstellen ist selten notwendig.

Typische Anwendungsfälle sind das Setzen von HTTP-Headern, das Anhängen von Ausgabeinhalten an den Antwortkörper sowie das manuelle Ausgeben oder Zurückgeben der Antwort an den Client. Über die Methoden der Klasse lässt sich der gesamte Antwortzyklus präzise steuern.

  • Header verwalten: Methoden wie setHeader() und getHeader() ermöglichen das Setzen und Lesen von HTTP-Headern.
  • Body verwalten: Mit setBody(), appendBody() und getBody() wird der Antwortkörper gesteuert.
  • Ausgabe: response() sendet die vollständige Antwort an den Client.

Beispiele

Antwortobjekt im Controller verwenden

<?php
class IndexController extends Yaf_Controller_Abstract
{
    public function indexAction()
    {
        // Antwortobjekt aus dem Dispatcher holen
        $response = $this->getResponse();

        // HTTP-Header setzen
        $response->setHeader('Content-Type', 'application/json');

        // Antwortkörper setzen
        $data = json_encode(['status' => 'ok', 'message' => 'Hallo Welt']);
        $response->setBody($data);

        // Automatisches Rendering deaktivieren
        $this->getView()->setScriptPath(null);

        return true;
    }
}

Body schrittweise aufbauen und ausgeben

<?php
class ApiController extends Yaf_Controller_Abstract
{
    public function listAction()
    {
        $response = $this->getResponse();

        // Bestehenden Body leeren
        $response->clearBody();

        // Inhalt schrittweise anhängen
        $response->appendBody('<ul>');
        foreach (['Eintrag A', 'Eintrag B', 'Eintrag C'] as $item) {
            $response->appendBody('<li>' . htmlspecialchars($item) . '</li>');
        }
        $response->appendBody('</ul>');

        // Aktuellen Inhalt des Body ausgeben
        echo $response->getBody();

        return false; // Kein weiteres Rendering
    }
}
<ul><li>Eintrag A</li><li>Eintrag B</li><li>Eintrag C</li></ul>

// Wichtig · Fallstricke

Abstrakte Klasse: Yaf_Response_Abstract kann nicht direkt instanziiert werden. Verwende stets die konkreten Unterklassen Yaf_Response_Http oder Yaf_Response_Cli bzw. erhalte das Antwortobjekt über Yaf_Dispatcher::getInstance()->getResponse() oder $this->getResponse() im Controller.

Yaf-Extension erforderlich: Die gesamte Yaf-Klassenhierarchie steht nur zur Verfügung, wenn die PHP-Erweiterung yaf installiert und in der php.ini aktiviert ist (extension=yaf.so).

Sicherheit: Beim manuellen Setzen von Header-Werten oder Body-Inhalten sollten Ausgaben stets mit htmlspecialchars() oder entsprechenden Funktionen bereinigt werden, um XSS-Angriffe zu vermeiden.