Start · Sprachen · PHP · Referenz · Yaf_Request_Simple

Yaf_Request_Simple

Klasse

Simuliert HTTP-Anfragen für Unit-Tests und CLI-Skripte im Yaf-Framework ohne echten Webserver.

seit PHP 2.0.0 Kategorie: misc

Signatur

class Yaf_Request_Simple extends Yaf_Request_Abstract

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"
string(4) "POST" string(4) "Auth" 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.