Signatur
Beschreibung
Yaf_Request_Abstract ist die abstrakte Basisklasse aller Anfrageobjekte im Yet Another Framework (Yaf). Sie kapselt alle Informationen einer eingehenden HTTP-Anfrage – darunter GET-, POST- und Routing-Parameter sowie Informationen über die verwendete HTTP-Methode. Konkrete Implementierungen wie Yaf_Request_Http und Yaf_Request_Simple erweitern diese Klasse.
Die Klasse stellt Methoden zur Verfügung, um auf den aktuellen Module-, Controller- und Action-Namen zuzugreifen, die vom Router gesetzt wurden. Zusätzlich können beliebige benutzerdefinierte Parameter über setParam() und getParam() am Anfrageobjekt gespeichert und ausgelesen werden.
Im typischen Yaf-Workflow wird eine Instanz dieser Klasse vom Dispatcher erstellt und automatisch an Controller-Aktionen weitergereicht, sodass Entwickler direkt auf alle relevanten Request-Daten zugreifen können. Eine direkte Instanziierung von Yaf_Request_Abstract ist nicht möglich, da es sich um eine abstrakte Klasse handelt.
- Routing-Informationen: Modul, Controller und Action werden nach dem Routing im Objekt gespeichert.
- Parameter-Zugriff: GET-, POST- und selbst definierte Parameter sind über einheitliche Methoden abrufbar.
- Request-Typ-Erkennung: Methoden wie
isGet(),isPost(),isCli()helfen bei der Unterscheidung des Request-Typs.
Beispiele
Zugriff auf Request-Daten in einer Yaf-Controller-Action
<?php
class IndexController extends Yaf_Controller_Abstract
{
public function indexAction()
{
// Das Request-Objekt ist eine Instanz von Yaf_Request_Abstract
$request = $this->getRequest();
// HTTP-Methode prüfen
if ($request->isPost()) {
$name = $request->getPost('name', 'Gast');
echo 'POST-Parameter name: ' . htmlspecialchars($name);
} elseif ($request->isGet()) {
$id = $request->getQuery('id', 0);
echo 'GET-Parameter id: ' . (int)$id;
}
// Routing-Informationen ausgeben
echo 'Modul: ' . $request->getModuleName() . PHP_EOL;
echo 'Controller: ' . $request->getControllerName() . PHP_EOL;
echo 'Action: ' . $request->getActionName() . PHP_EOL;
}
}
Benutzerdefinierte Parameter am Request-Objekt setzen und auslesen
<?php
class BootstrapController extends Yaf_Controller_Abstract
{
public function indexAction()
{
$request = $this->getRequest();
// Eigenen Parameter setzen (z. B. aus einem Plugin heraus)
$request->setParam('userId', 99);
$request->setParam('role', 'admin');
// Parameter wieder auslesen
$userId = $request->getParam('userId');
$role = $request->getParam('role');
echo 'User-ID: ' . $userId . PHP_EOL;
echo 'Rolle: ' . $role . PHP_EOL;
// Nicht gesetzter Parameter mit Standardwert
$lang = $request->getParam('language', 'de');
echo 'Sprache: ' . $lang . PHP_EOL;
}
}
// Wichtig · Fallstricke
Sicherheitshinweis: Alle aus dem Request ausgelesenen Daten (GET, POST, Routing-Parameter) sind als nicht vertrauenswürdig zu behandeln. Ausgaben müssen stets mit htmlspecialchars() oder ähnlichen Funktionen gesichert werden, um XSS-Angriffe zu verhindern. Datenbankabfragen müssen mit Prepared Statements oder Escaping geschützt werden.
Yaf_Request_Abstract ist als abstrakte Klasse nicht direkt instanziierbar. Verwende stattdessen Yaf_Request_Http für HTTP-Anfragen oder Yaf_Request_Simple für Unit-Tests und CLI-Szenarien.
Die Klasse gehört zur Yaf-Extension, die als PECL-Paket installiert werden muss (pecl install yaf). Sie ist nicht im PHP-Kern enthalten und steht somit nur zur Verfügung, wenn die Extension aktiviert ist.