Signatur
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) ""
// 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.