Start · Sprachen · PHP · Referenz · Yaf_Response_Cli

Yaf_Response_Cli

Klasse

Repräsentiert eine CLI-Antwort im Yaf-Framework für Kommandozeilen-Anwendungen.

seit PHP 2.0.0 Kategorie: misc

Signatur

class Yaf_Response_Cli extends Yaf_Response_Abstract

Beschreibung

Yaf_Response_Cli ist die spezialisierte Antwort-Klasse des Yaf-Frameworks für den Einsatz in Kommandozeilen-Applikationen (CLI). Sie erbt von Yaf_Response_Abstract und passt das Antwort-Objekt an den CLI-Kontext an – also ohne HTTP-Header oder HTTP-Statuscodes.

Wenn eine Yaf-Anwendung über die Kommandozeile aufgerufen wird, erstellt der Dispatcher automatisch eine Instanz von Yaf_Response_Cli anstelle von Yaf_Response_Http. Dadurch können Controller-Aktionen ihre Ausgabe in den Antwort-Body schreiben, ohne HTTP-spezifische Funktionen zu nutzen.

Die Klasse stellt die üblichen Methoden der abstrakten Basisklasse zur Verfügung, darunter appendBody(), prependBody(), getBody() und clearBody(), um den Ausgabe-Inhalt zu verwalten. Am Ende des Dispatcher-Zyklus wird der gesammelte Body auf die Standardausgabe geschrieben.

In der Praxis wird Yaf_Response_Cli selten direkt instanziiert – der Dispatcher übernimmt dies automatisch. Sie ist jedoch nützlich bei Unit-Tests oder wenn man das Antwort-Objekt explizit prüfen oder manipulieren möchte.

Beispiele

Automatische Verwendung über den Yaf-Dispatcher (CLI)

<?php
// Bootstrap-Datei oder Einstiegspunkt für die CLI-Anwendung
$app = new Yaf_Application('/path/to/conf/application.ini');

// Dispatcher erkennt CLI-Kontext und erstellt automatisch Yaf_Response_Cli
$response = $app->getDispatcher()->dispatch(new Yaf_Request_Simple());

// Ausgabe des gesammelten Bodys
echo $response->getBody();
// Alternativ: $response->response(); gibt den Body direkt aus

Direkte Instanziierung und Body-Manipulation

<?php
// Direkte Nutzung von Yaf_Response_Cli, z. B. in einem Unit-Test
$response = new Yaf_Response_Cli();

// Body-Inhalt hinzufügen
$response->appendBody('Hallo von der Kommandozeile!' . PHP_EOL);
$response->appendBody('Verarbeitung abgeschlossen.' . PHP_EOL);

// Body abrufen und prüfen
$body = $response->getBody();
echo $body;

// Body leeren
$response->clearBody();
var_dump($response->getBody()); // string(0) ""
Hallo von der Kommandozeile! Verarbeitung abgeschlossen. string(0) ""

// Wichtig · Fallstricke

Yaf muss als PECL-Extension installiert sein (pecl install yaf). Yaf_Response_Cli ist nur verfügbar, wenn das Yaf-Modul geladen ist.

Im Gegensatz zu Yaf_Response_Http kennt Yaf_Response_Cli keine HTTP-Header-Methoden. Versuche, HTTP-spezifische Methoden aufzurufen, führen zu Fehlern oder sind wirkungslos. Stellen Sie sicher, den richtigen Antwort-Typ für den jeweiligen Kontext zu verwenden.

Bei Yaf im CLI-Modus ist Yaf_Request_Simple das passende Request-Objekt, da Yaf_Request_Http den Zugriff auf superglobale HTTP-Variablen erwartet, die im CLI-Kontext nicht sinnvoll befüllt sind.