Signatur
Beschreibung
Yaf_Request_Simple ist eine konkrete Implementierung von Yaf_Request_Abstract innerhalb des Yaf-Frameworks (Yet Another Framework). Sie ermöglicht es, HTTP-Anfragen programmatisch zu simulieren – insbesondere im CLI-Modus oder in automatisierten Tests – ohne dass ein echter Webserver oder ein HTTP-Request notwendig ist.
Typischerweise wird diese Klasse in Unit-Tests eingesetzt, um Controller-Logik zu testen, ohne eine vollständige HTTP-Umgebung aufsetzen zu müssen. Man kann Methode (GET, POST, PUT usw.), Modul, Controller, Action sowie GET- und POST-Parameter direkt beim Erstellen der Instanz angeben.
Im Gegensatz zu Yaf_Request_Http, die automatisch aus den PHP-Superglobalen ($_GET, $_POST, $_SERVER) befüllt wird, erlaubt Yaf_Request_Simple eine vollständige manuelle Kontrolle über alle Anfrage-Parameter – ideal für reproduzierbare, isolierte Tests.
- Kein Webserver oder SAPI erforderlich
- Vollständig kontrollierbare Eingabedaten
- Kompatibel mit dem gesamten Yaf-Dispatcher-Lifecycle
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $method | string | Die HTTP-Methode der simulierten Anfrage, z. B. 'GET', 'POST', 'PUT', 'DELETE'. |
|
| $module | string | Der Name des Yaf-Moduls, das die Anfrage ansprechen soll, z. B. 'Index'. |
|
| $controller | string | Der Name des Controllers, an den die Anfrage geleitet werden soll, z. B. 'Index'. |
|
| $action | string | Der Name der Action-Methode, die ausgeführt werden soll, z. B. 'index'. |
|
| $params | array | [] | Assoziatives Array mit zusätzlichen Anfrage-Parametern (entspricht etwa $_GET- oder $_POST-Daten). |
Beispiele
Einfache GET-Anfrage simulieren
<?php
// Yaf-Anwendung initialisieren
$config = new Yaf_Config_Simple([
'application' => [
'directory' => __DIR__ . '/application',
],
]);
$app = new Yaf_Application($config);
// Anfrage simulieren: GET /Index/Index/index?id=42
$request = new Yaf_Request_Simple(
'GET', // HTTP-Methode
'Index', // Modul
'Index', // Controller
'index', // Action
['id' => 42] // Parameter
);
// Dispatcher mit simulierter Anfrage ausführen
$app->getDispatcher()->dispatch($request);
POST-Anfrage für Unit-Test erstellen
<?php
// Simuliert einen Login-POST-Request
$request = new Yaf_Request_Simple(
'POST',
'Index',
'Auth',
'login',
[
'username' => 'testuser',
'password' => 'geheim123',
]
);
// Methode prüfen
var_dump($request->getMethod()); // string(4) "POST"
// Controller prüfen
var_dump($request->getControllerName()); // string(4) "Auth"
// Parameter abrufen
var_dump($request->getParam('username')); // string(8) "testuser"
// Wichtig · Fallstricke
Nur für Tests und CLI: Yaf_Request_Simple sollte nicht in produktiven Webanwendungen verwendet werden. Für echte HTTP-Anfragen ist Yaf_Request_Http vorgesehen, die automatisch aus den Superglobalen befüllt wird.
Yaf-Extension erforderlich: Die Klasse ist Bestandteil der Yaf-PECL-Extension (ext/yaf) und steht nicht in der PHP-Standardbibliothek zur Verfügung. Sie muss über PECL installiert werden.
Routing wird übersprungen: Da Modul, Controller und Action direkt angegeben werden, wird der normale Router-Dispatch-Prozess bei Verwendung dieser Klasse meist umgangen oder beeinflusst – ideal für gezielte Tests einzelner Aktionen.