La raison pour laquelle je pose cette question est parce qu'un script PHP n'est pas un itinéraire? Par exemple, si vous avez un article.php, votre itinéraire est simplement http: // mysite. com/article.php .
Pourquoi éloigner davantage le concept d'un itinéraire alors qu'il existe déjà sous la forme d'un simple fichier?
Pour comprendre ce que fait un routeur, vous devez d'abord comprendre ce qu'est un moteur de réécriture. De la article Wikipedia (soulignement le mien):
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 un degré de 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:
Il y a divers avantages à utiliser la technique. Puisque PHP est généralement étroitement couplé à 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 du Framework Zend explique le processus comme:
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.
La plupart des frameworks PHP de nos jours sont basés sur le modèle MVC , et sur un framework MVC le processus va quelque chose comme ceci*:
index.php
script,index.php
obtient l'URL et démarre le processus de routage.La mise en correspondance des paramètres avec les contrôleurs et les méthodes utilise généralement la mise en correspondance via 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 page de documentation de routage d'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 dans 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.