Signatur
Beschreibung
Yaf_Route_Simple ist eine einfache Routing-Klasse des Yaf-Frameworks (Yet Another Framework), die das Routing auf Basis von Query-String-Parametern durchführt. Anders als pfadbasiertes Routing wertet sie keine URL-Pfadsegmente aus, sondern liest Modul, Controller und Action direkt aus benannten GET-Parametern.
Beim Instanziieren gibt man die Namen der drei GET-Parameter an, unter denen das Modul, der Controller und die Action in der URL übergeben werden. Beispiel: /index.php?m=Blog&c=Post&a=list würde mit den Parameternamen m, c, a das Modul Blog, den Controller Post und die Action list ermitteln.
Diese Route eignet sich besonders für einfache oder legacy-Anwendungen, die auf Query-String-basierter Navigation aufbauen, sowie für administrative Backends, bei denen SEO-freundliche URLs keine Priorität haben. Sie ist sehr leichtgewichtig und schnell, da kein reguläres Ausdrucks-Matching erforderlich ist.
Die Klasse implementiert das Yaf_Route_Interface und kann wie andere Yaf-Routen im Router registriert werden. Da sie ausschließlich GET-Parameter auswertet, ist sie nicht für REST-Anwendungen geeignet, die saubere URL-Strukturen benötigen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $module_name Pflicht | string | Name des GET-Parameters, der das Modul enthält, z. B. 'm'. |
|
| $controller_name Pflicht | string | Name des GET-Parameters, der den Controller enthält, z. B. 'c'. |
|
| $action_name Pflicht | string | Name des GET-Parameters, der die Action enthält, z. B. 'a'. |
Rückgabewert
Beispiele
Yaf_Route_Simple im Router registrieren
<?php
// Bootstrap oder Einstiegspunkt der Anwendung
$app = new Yaf_Application('/path/to/conf/application.ini');
$app->bootstrap(function(Yaf_Bootstrap_Abstract $bootstrap) {
$router = Yaf_Dispatcher::getInstance()->getRouter();
// GET-Parameter m=Modul, c=Controller, a=Action
$simpleRoute = new Yaf_Route_Simple('m', 'c', 'a');
$router->addRoute('simple', $simpleRoute);
});
// Aufruf: /index.php?m=Blog&c=Post&a=list
// => Modul: Blog, Controller: Post, Action: list
$app->run();
Yaf_Route_Simple als einzige Route ohne Modul-Parameter
<?php
// Anwendung ohne Modulunterstützung
// Nur Controller und Action per GET-Parameter
$app = new Yaf_Application('/path/to/conf/application.ini');
$app->bootstrap(function(Yaf_Bootstrap_Abstract $bootstrap) {
$router = Yaf_Dispatcher::getInstance()->getRouter();
// Leerer String für module_name deaktiviert Modul-Routing
$simpleRoute = new Yaf_Route_Simple('', 'controller', 'action');
$router->addRoute('nomodule', $simpleRoute);
});
// Aufruf: /index.php?controller=User&action=profile
// => Controller: User, Action: profile
$app->run();
// Wichtig · Fallstricke
Sicherheitshinweis: Da Modul, Controller und Action direkt aus GET-Parametern gelesen werden, sollte sichergestellt sein, dass nur bekannte und erlaubte Werte akzeptiert werden. Das Yaf-Framework filtert zwar ungültige Dispatcher-Ziele, dennoch empfiehlt es sich, Eingaben zu validieren, um unerwartetes Verhalten zu vermeiden.
Priorisierung: Routen werden in Yaf in umgekehrter Reihenfolge der Registrierung geprüft (LIFO). Wird Yaf_Route_Simple als letzte Route hinzugefügt, hat sie die höchste Priorität. Entsprechend sollte die Reihenfolge bei mehreren Routen sorgfältig geplant werden.
Anforderung: Das Yaf-Framework muss als PHP-Extension installiert sein (pecl install yaf). Es handelt sich um eine C-Extension und ist nicht im PHP-Standardumfang enthalten.