La classe Yaf_Router
(Yaf >=1.0.0)
Introduction
Yaf_Router est le framework standard pour le routage. Le routage est le fait de prendre la partie finale d'une URI (la partie de l'URI qui vient après l'URI de base : voir la méthode Yaf_Request_Abstract::setBaseUri()), et la décompose en paramètres pour déterminer quel module, contrôleur, et action de ce contrôleur doivent recevoir la requête. Cette valeur de module, de contrôleur, d'action et d'autres paramètres sont empaquetés dans un objet Yaf_Request_Abstract qui sera ensuite analysé par Yaf_Dispatcher. Le routage intervient uniquement lorsqu'une requête est initialement reçue et avant l'envoi au premier contrôleur. Yaf_Router est prévu pour autoriser les fonctionnalités similaires au mod_rewrite en utilisant des structures PHP. Ces structures sont basés sur le routage en Ruby on Rails et ne nécessitent aucun connaissance en ré-écriture d'URL de serveur web. Elles sont prévues pour fonctionner avec une seule règle Apache mod_rewrite (une parmis) :
Exemple #1 Règle de ré-écriture pour Apache
RewriteEngine on RewriteRule !\.(js|ico|gif|jpg|png|css|html)$ index.php
Exemple #2 Règle de ré-écriture pour Apache
RewriteEngine On RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L]
Exemple #3 Règle de ré-écriture pour Lighttpd
url.rewrite-once = ( ".*\?(.*)$" => "/index.php?$1", ".*\.(js|ico|gif|jpg|png|css|html)$" => "$0", "" => "/index.php" )
Exemple #4 Règle de ré-écriture pour Nginx
server { listen ****; server_name yourdomain.com; root document_root; index index.php index.html; if (!-e $request_filename) { rewrite ^/(.*) /index.php/$1 last; } }
Routage par défaut
Yaf_Router est fourni préconfiguré avec un routage par défaut Yaf_Route_Static, qui décompose les URIs en forme de contrôleur/action. De plus, un nom de module peut être spécifié comme premier élément du chemin, autorisant ainsi les URIs sous la forme module/contrôleur/action. Et finalement, les paramètres ajoutés à l'URI seront détectés aussi par défaut - contrôleur/action/var1/value1/var2/value2.
Note:
Le nom du module doit être défini dans la configuration, par exemple application.module="Index,Foo,Bar" dans ce cas, uniquement index, foo et bar peuvent être considérés comme nom de module ; si la configuration n'existe pas, seul le module nommé "Index" sera utilisable.
Voici quelques exemples sur la façon dont ces routages sont détectés :
Exemple #5 Exemple avec Yaf_Route_Static (route par défaut)
// Supposons la configuration suivante : $conf = array( "application" => array( "modules" => "Index,Blog", ), ); Que le contrôleur : http://example/news controller == news Qu'une action (lorsqu'on définit yaf.action_prefer=1 en php.ini) action == news Module invalide lié à un nom de contrôleur : http://example/foo controller == foo Module + contrôleur : http://example/blog/archive module == blog controller == archive Module + contrôleur + action : http://example/blog/archive/list module == blog controller == archive action == list Module + contrôleur + action + paramètres : http://example/blog/archive/list/sort/alpha/date/desc module == blog controller == archive action == list sort == alpha date == desc
Synopsis de la classe
Propriétés
- _routes
-
Pile des routes enregistrées.
- _current
-
Après la phase de routage, ceci indique le nom de la route utilisé pour router la demande courante. Vous pouvez récupérer ce nom en utilisant la méthode Yaf_Router::getCurrentRoute().
Sommaire
- Yaf_Router::addConfig — Ajoute une route définie dans la configuration d'un routeur
- Yaf_Router::addRoute — Ajoute une nouvelle route dans un routeur
- Yaf_Router::__construct — Constructeur de la classe Yaf_Router
- Yaf_Router::getCurrentRoute — Récupère le nom effectif de la route
- Yaf_Router::getRoute — Récupère une route via son nom
- Yaf_Router::getRoutes — Récupère les routes enregistrées
- Yaf_Router::route — Le but de route
Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-class.yaf-router.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.