Pour comprendre ce que fait un routeur, vous devez d'abord comprendre ce qu'est un moteur de réécriture. Extrait de l'article Wikipédia (c'est moi qui souligne):
Un moteur de réécriture est un logiciel qui modifie l'apparence d'une URL Web (réécriture d'URL). Les URL réécrites (parfois appelées URL courtes, fantaisistes ou conviviales pour les moteurs de recherche - SEF) sont utilisées pour fournir des liens plus courts et plus pertinents vers des pages Web. La technique ajoute une certaine séparation entre les fichiers utilisés pour générer une page Web et l'URL qui est présentée au monde .
Lorsqu'un moteur de réécriture est utilisé, vous n'avez pas de corrélation 1: 1 entre l'URL et un script PHP. Un exemple du même article:
http://example.com/wiki/index.php?title=Page_title
peut être réécrit comme:
http://example.com/wiki/Page_title
Il existe divers avantages à utiliser la technique. Étant donné que PHP est généralement étroitement associé à Apache, le moteur de réécriture le plus couramment utilisé est mod_rewrite d'Apache .
Si vous souhaitez réécrire des URL, vous avez besoin d'une sorte de routage, car le routage est le processus consistant à prendre l'URL, à la diviser en composants et à décider quel est le script à appeler. La page de documentation du routeur standard de Zend Framework explique le processus comme suit:
Le routage est le processus consistant à prendre un point de terminaison URI (la partie de l'URI qui vient après l'URL de base) et à le décomposer en paramètres pour déterminer le module, le contrôleur et l'action de ce contrôleur qui doivent recevoir la demande.
De nos jours, la plupart des frameworks PHP sont basés sur le modèle MVC , et sur un framework MVC, le processus ressemble à ceci * :
- Le navigateur pointe vers une URL,
- Le serveur Web intercepte la demande et la transmet à un point d'entrée commun, généralement un
index.php
script,
index.php
obtient l'URL et démarre le processus de routage.
- L'URL est décomposée en paramètres, où le premier est le contrôleur, le second est la méthode d'action et les autres sont considérés comme des paramètres dynamiques,
- Si une classe de contrôleur correspondant au premier paramètre existe, un objet contrôleur est instancié,
- La méthode d'action qui est généralement une fonction de l'objet contrôleur est appelée et son retour est ce qui est réellement retourné au navigateur.
La mise en correspondance des paramètres avec les contrôleurs et les méthodes utilise généralement la mise en correspondance via des expressions régulières pour pouvoir gérer des modèles de routage complexes et dynamiques, appelés routes. De bons exemples de routes peuvent être trouvés sur la page de documentation du routage URI de CodeIgniter :
$ route ['journals'] = "blogs";
$ route ['blog / joe'] = "blogs / utilisateurs / 34";
$ route ['product / (: any)'] = "catalog / product_lookup";
$ route ['product / (: num)'] = "catalog / product_lookup_by_id / $ 1";
Le $route
tableau contient les modèles sous forme de clés et les actions résultantes sous forme de valeurs au controller/action_method/dynamic_parameter
format.
* Il ne s'agit pas d'une description du processus canonique, mais simplement d'une explication trop simplifiée.