Start · Sprachen · PHP · Referenz · Yaf_Request_Http

Yaf_Request_Http

Klasse

Repräsentiert eine HTTP-Anfrage vom Client mit URI-, Query- und POST-Parametern im Yaf-Framework.

seit PHP 2.0.0 Kategorie: misc

Signatur

class Yaf_Request_Http extends Yaf_Request_Abstract

Beschreibung

Yaf_Request_Http ist die Standard-Anfrageklasse des Yaf-Frameworks (Yet Another Framework) und kapselt alle Informationen einer eingehenden HTTP-Anfrage. Sie stellt Methoden bereit, um auf GET-Parameter, POST-Daten, Cookie-Werte, Server-Variablen sowie den angeforderten URI zuzugreifen.

Die Klasse erbt von Yaf_Request_Abstract und wird in der Regel automatisch vom Dispatcher erzeugt. Im Normalfall müssen Entwickler die Klasse nicht manuell instanziieren – sie steht jedoch direkt im Controller über $this->getRequest() zur Verfügung.

Mit Yaf_Request_Http lässt sich ermitteln, ob eine Anfrage per GET, POST, PUT oder DELETE gesendet wurde. Außerdem können Parameter aus verschiedenen Quellen (GET, POST, Umgebung, Route) einheitlich über getParam() abgefragt werden, wobei die Reihenfolge der Parameterquellen konfigurierbar ist.

Nützlich ist die Klasse besonders für die Implementierung von REST-APIs oder klassischen Web-Applikationen, bei denen der Zugriff auf HTTP-spezifische Metadaten (Methode, Header-Informationen, URI-Bestandteile) strukturiert und typsicher erfolgen soll.

Parameter

Name Typ Default Beschreibung
$request_uri string Der Request-URI, der verarbeitet werden soll. Wird dieser weggelassen, ermittelt Yaf den URI automatisch aus den Server-Variablen.
$base_uri string Der Basis-URI der Applikation. Wird verwendet, um den eigentlichen Anwendungspfad aus dem vollständigen Request-URI herauszurechnen.

Beispiele

Manuelle Instanziierung und Parameterabfrage

<?php
// Manuelles Erstellen einer HTTP-Anfrage (z. B. für Tests)
$request = new Yaf_Request_Http('/user/profile?id=42');

// GET-Parameter auslesen
$id = $request->getQuery('id'); // '42'
echo 'User-ID: ' . $id . PHP_EOL;

// Anfragemethode ermitteln
echo 'Methode: ' . $request->getMethod() . PHP_EOL;

// Prüfen ob es eine GET-Anfrage ist
if ($request->isGet()) {
    echo 'Es handelt sich um eine GET-Anfrage.' . PHP_EOL;
}
User-ID: 42 Methode: GET Es handelt sich um eine GET-Anfrage.

Nutzung im Yaf-Controller

<?php
class UserController extends Yaf_Controller_Abstract {

    public function profileAction() {
        /** @var Yaf_Request_Http $request */
        $request = $this->getRequest();

        // Routed Parameter (z. B. aus URL-Routing)
        $userId = $request->getParam('id');

        // POST-Daten lesen
        $name = $request->getPost('name', 'Unbekannt');

        // Cookie-Wert lesen
        $session = $request->getCookie('session_token', null);

        // Nur bei POST-Anfragen verarbeiten
        if ($request->isPost()) {
            // Daten speichern ...
            echo 'POST-Daten empfangen: Name = ' . htmlspecialchars($name);
        } else {
            echo 'Profil anzeigen für User-ID: ' . (int)$userId;
        }
    }
}

HTTP-Methode und AJAX-Erkennung prüfen

<?php
$request = new Yaf_Request_Http('/api/data');

// Methode abfragen
$method = $request->getMethod(); // z. B. 'GET', 'POST', 'PUT', 'DELETE'
echo 'HTTP-Methode: ' . $method . PHP_EOL;

// AJAX-Anfrage erkennen (prüft X-Requested-With: XMLHttpRequest)
if ($request->isXmlHttpRequest()) {
    echo 'Dies ist eine AJAX-Anfrage.' . PHP_EOL;
} else {
    echo 'Normale HTTP-Anfrage.' . PHP_EOL;
}

// Vollständigen Request-URI ermitteln
echo 'Request-URI: ' . $request->getRequestUri() . PHP_EOL;
HTTP-Methode: GET Normale HTTP-Anfrage. Request-URI: /api/data

// Wichtig · Fallstricke

Sicherheitshinweis: Alle über getQuery(), getPost() oder getParam() gelesenen Werte sind nicht automatisch gefiltert oder validiert. Benutzereingaben müssen vor der Ausgabe mit htmlspecialchars() oder ähnlichen Methoden gesichert und vor der Datenbankverarbeitung über Prepared Statements oder entsprechende Escaping-Funktionen geschützt werden.

Die Methode isXmlHttpRequest() prüft den X-Requested-With-Header, der jedoch vom Client frei gesetzt werden kann. Sie sollte daher nicht als Sicherheitsmerkmal verwendet werden.

Yaf_Request_Http setzt voraus, dass die Yaf-Erweiterung (ext-yaf) installiert und aktiviert ist. Yaf ist eine PECL-Erweiterung und nicht Bestandteil von PHP selbst.