Router

  • Hallo,


    ich hab mal wieder was geschrieben.
    Und zwar eine Router-Klasse. Diese Routet Seitenaufrufe auf einzelne Seiten.


    Beispiel zur Verwendung:

    PHP
    <?php	require_once('sysRouter.class.php');	$routes = array(		'/' => 'start@Index',		'/foo' => 'foo@Index',		'/foo/([a-zA-Z0-9_]+)/view' => 'view@Foo',		':error' => 'error@Index',		':end' => ''	);	new sysRouter($routes, array(		'request' => '/foo/1w3435/view' // zum testen	));?>


    Zur Verwendung:
    Die Klassen müssen selbst geladen werden, beispielsweise per Autoload.
    Es wird eine Instanz der Klasse erzeugt, welche man mit $router->getController() bekommt.
    Nach dem erzeugen der Instanz wird die Funktion aufgerufen und alle Stellen aus dem Regulärem Ausdruck als Parameter übergeben. Beispiel: start@Index ruft die Methode start der Klasse Index auf und übergibt keinen Parameter, da der Reguläre ausdruck keine Stellen hat.


    Zum Testen kann man beim Aufrufen des Routers als zweiten Parameter ein optionales Array mit einem Request angeben. Lässt man diesen weg, wird $_SERVER['REQUEST_URI'] verwendet.


    Eine .htaccess, die alle Aufrufe auf die index.php leitet wird noch benötigt.


    Router:


    Download:
    http://fridoliiin.de/chris/_ex…chnippsel/php?codeblock=3


    Weitere Infos unter http://fridoliiin.de/chris/codeschnippsel/php#router :)


    Viele Grüße,
    Chris

  • Hi,


    auf einen Wunsch hin erklär ich das ganze nochmal etwas ausführlicher..


    Der Router routet Seitenaufrufe auf Klassen.
    Eine Klasse wär zum Beispiel Blog oder StatischeSeiten.
    Nehmen wir fürs Beispiel letzteres, das is einfacher..


    Jetzt kann man Routen angeben.
    Zum Beispiel / auf view@StatischeSeiten.
    Und /pages/([a-zA-Z0-9_]+) auch auf view@StatischeSeiten.


    Ruft man dann im Browser deinedomain/pages/eine_testseite auf, erstellt der Router eine neue Instanz der Klasse StatischeSeiten und ruft die Methode view mit dem Parameter eine_testseite auf. Wenn man nur deinedomain/ aufruft, wird view@StatischeSeiten ohne Parameter aufgerufen. Jetzt kann man in der Methode view als Standardparameter $page zum Beispiel "index" definieren (public function view ($page = "index") {), damit wird dann die Startseite aufgerufen.


    Die Route :error ist eine spezielle Route, die wird aufgerufen, wenn die Seite nicht gefunden wurde.
    Die Route :end muss man immer angeben :)


    In einer späteren Version (grad in Entwicklung) kann man auch zusätzliche Parameter übergeben..
    zum Beispiel / auf view(index, html)@StatischeSeiten
    und /pages/([a-zA-Z0-9_]+) auf view(html)@StatischeSeiten
    und /pages/([a-uA-Z0-9_]+)/(html|text|xml) auf view@StatischeSeiten


    Die Methode view@StatischeSeiten könnte dann die Parameter ($page, $format) erwarten.
    Diese zusätzlichen Parameter werden hinten an die Parameterliste angehangen.


    Jetz verständlicher? :)


    Viele Grüße,
    Chris