Start · Sprachen · PHP · Referenz · Yaf_Route_Simple

Yaf_Route_Simple

Klasse

Einfache Route, die Modul, Controller und Action anhand von GET-Parametern aus der URL ermittelt.

seit PHP 2.0.0 Kategorie: misc

Signatur

class Yaf_Route_Simple implements Yaf_Route_Interface

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

Typ

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.