Start · Sprachen · PHP · Referenz · Yaf_Route_Supervar

Yaf_Route_Supervar

Klasse

Routet Anfragen im Yaf-Framework anhand eines speziellen Query-Parameters (Supervar), der die Route als URL-Pfad enthält.

seit PHP 2.0.0 Kategorie: misc

Signatur

class Yaf_Route_Supervar implements Yaf_Route_Interface

Beschreibung

Yaf_Route_Supervar ist eine Routing-Klasse des Yaf-Frameworks (Yet Another Framework), die eine Anfrage nicht anhand des URL-Pfades, sondern anhand eines definierten Query-Parameters auflöst. Dieser Parameter – der sogenannte Supervar – enthält den virtuellen Pfad, z. B. ?r=/controller/action.

Diese Routing-Strategie ist besonders nützlich, wenn der Webserver keine URL-Rewriting-Regeln unterstützt oder die Anwendung in einer Umgebung läuft, in der mod_rewrite bzw. try_files nicht verfügbar ist. Der Supervar-Wert wird wie ein normaler Yaf-Pfad interpretiert und daraus Modul, Controller und Action abgeleitet.

Die Klasse implementiert das Interface Yaf_Route_Interface und kann wie jede andere Route über Yaf_Router::addRoute() registriert werden. Sie wird typischerweise als Fallback- oder Entwicklungsroute eingesetzt.

  • Einfache Integration ohne Webserver-Konfiguration
  • Geeignet für Shared-Hosting-Umgebungen
  • Unterstützt die Standard-Yaf-Pfad-Syntax (Modul/Controller/Action)

Parameter

Name Typ Default Beschreibung
$supervar_name Pflicht string Der Name des Query-Parameters, der den Routing-Pfad enthält, z. B. 'r' für ?r=/news/detail.

Rückgabewert

Typ

Beispiele

Supervar-Route registrieren und verwenden

<?php
// Bootstrap-Klasse oder Konfiguration
$router = Yaf_Dispatcher::getInstance()->getRouter();

// Route registrieren: ?r=/controller/action
$supervarRoute = new Yaf_Route_Supervar('r');
$router->addRoute('supervar', $supervarRoute);

// Aufruf im Browser: http://example.com/index.php?r=/news/detail/id/42
// Yaf löst auf:
//   Controller: News
//   Action:     Detail
//   Parameter:  id = 42

Supervar-Route in der Yaf-Konfiguration (ini)

<?php
// application.ini:
// routes.supervar.type = "Supervar"
// routes.supervar.varname = "r"

// Alternativ per PHP:
$config = new Yaf_Config_Ini(APPLICATION_PATH . '/conf/application.ini', 'product');
$app = new Yaf_Application($config);

// Wenn routes.supervar.type = "Supervar" und routes.supervar.varname = "r"
// definiert sind, registriert Yaf die Route automatisch.
// Aufruf: http://example.com/index.php?r=/user/profile
// => UserController::profileAction()

// Wichtig · Fallstricke

Sicherheitshinweis: Da der Routing-Pfad direkt aus einem Query-Parameter stammt, sollten alle daraus abgeleiteten Eingaben (Controller, Action, Parameter) sorgfältig validiert werden. Yaf normalisiert den Pfad zwar intern, dennoch sollte keine direkte Ausgabe ohne Escaping erfolgen, um XSS zu vermeiden.

Hinweis zur Priorität: Routen werden in Yaf in umgekehrter Reihenfolge der Registrierung geprüft (zuletzt hinzugefügte zuerst). Die Supervar-Route sollte daher als erste oder mit niedrigster Priorität registriert werden, wenn andere Routen Vorrang haben sollen.

Yaf ist eine PECL-Extension und muss separat installiert werden (pecl install yaf). Die Klasse steht nur zur Verfügung, wenn die Extension aktiv ist.