Bonjour,
Développeur passionné mais occasionnel depuis des années, je m'efforce de faire évoluer avec le temps un projet de framework PHP adapté à mes besoins personnels. Evidemment avec les années le projet est devenu plus gros et j'en viens à le repenser en m'inspirant des bonnes pratiques apprises dernièrement, ainsi que des frameworks existants sur le marché.
Et parfois sur certains aspects, je dois faire des choix. Par exemple, j'ai choisi de ne pas utiliser de système évolué de templating pour l'instant, PHP étant à mon goût suffisamment capable de gérer ça tout seul. Ca ne m'empêche pas d'avoir une structure MVC correcte et donc des templates les plus propres possibles.
Concernant le routing, c'est une autre paire de manche. Je m'efforce depuis quelques temps d'essayer de comprendre l'intérêt d'un système de routing tel qu'il est habituellement présenté. Que ça soit dans les tutos ou au sein des frameworks existants, tous les systèmes de routing semblent se baser sur une liste de routes stockée dans un fichier XML ou JSON... Et j'ai vraiment du mal à comprendre l'intérêt de mettre en place une telle fonctionnalité quand je peux organiser mon application selon une arborescence type "/modules/module/action.act.php" et donc laisser reposer ma gestion des routes sur une détection automatique des arguments passés à l'URL. Détection basée sur une convention simple : le premier argument correspond toujours au module, le deuxième à l'action souhaitée. Je trouve que ça suffit pour connaitre le fichier à inclure et la classe à instancier.
J'ai commencé à me dire que cela pouvait aider à gérer des URL type "0000-titre-de-l-article.html". Mais c'est également faisable en base de données, directement dans les tables stockant les ressources ciblées (donc la table "articles" selon l'exemple présent).
Ensuite, j'ai songé qu'en cas de modification du lien, stocker l'ensemble des routes permet de gérer les redirections à appliquer, et donc c'est utile pour le SEO. Mais là encore, c'est gérable en base de données, et avec une requête correctement écrite on n'a pas besoin d'en rajouter une supplémentaire.
J'ai encore cherché... et je ne trouve pas d'avantage flagrant. Je ne comprends pas pourquoi les "bonnes pratiques" veulent que l'on s'impose le parsing d'un fichier XML + un appel à la DB quand on peut se permettre de ne faire que l'appel à la DB.
Si quelqu'un a la réponse, je suis preneur... cela m'évitera peut-être de faire un choix précipité et de revenir sur ma décision dans quelques mois. ^^
tl;dr : A quoi ça sert de stocker les routes dans un fichier XML/JSON plutôt que de reposer sur des conventions et une base de données adaptée ?
Partager