IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

Les frameworks PHP et leur système de routing


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Mai 2013
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 3
    Par défaut Les frameworks PHP et leur système de routing
    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 ?

  2. #2
    Membre Expert

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Par défaut
    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
    Pour les autres frameworks je sais pas, mais c'est exactement comme cela que fonctionne CakePhP http://book.cakephp.org/2.0/fr/development/routing.html

  3. #3
    Candidat au Club
    Inscrit en
    Mai 2013
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 3
    Par défaut
    Merci, en effet Cake fait partie de ceux que je n'ai jamais eu l'occasion de tester.
    Mais ça ne répond pas à ma question qui porte bel et bien sur le pourquoi. C'est toujours sympa de trouver un outil déjà existant qui s'approche du fonctionnement souhaité, mais en l'occurrence là ça ne m'explique pas l'intérêt d'utiliser un fichier XML/JSON qui liste toutes les routes. J'ai du mal à concevoir que ce soit totalement remplaçable par ma technique, les avantages et inconvénients doivent forcément être différents mais je pense que certains m'échappent.

  4. #4
    Candidat au Club
    Inscrit en
    Mai 2013
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 3
    Par défaut
    Je me permets un petit up, je n'ai toujours pas trouvé la réponse à ma question... Ca serait cool si quelqu'un pouvait m'éclairer, mes recherches ne donnant rien.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 146
    Par défaut
    c'est marrant j'ai la même démarche que toi =)

    j'ai crée ce framework : https://github.com/Esysteme/glial

    (en gros ça reprend tous les principes que tu as énoncé et d'autres encore.)

    Mon routing est a chier pour le moment, mais je travail dessus.

    l’intérêt est uniquement pour le SEO, sinon c'est très limité.


    Un cas concret qui ne marche pas et qui a besoin d'un routing : si jamais tu veux utilisé une url du type species/class

    le problème est que on ne peut pas définir de méthode "class" et donc routing obligé dans ce cas là.



    Si tu veux te joindre à moi tu es le bienvenue , en gros tous les composants chargés => 0.6Mo utilisé chargé en 0.02 sec / 0.2sec => base distante

  6. #6
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    L'intérêt d'un routing stocké dans des fichiers (xml,php,json ...) c'est que c'est très maléable. On est pas obligé de suivre l'habituel /module/action/parametres.
    Du coup ça a un vrai intérêt SEO. Ca permet aussi de faire plus ou moins simplement des routes internationalisées (qui change selon la langue choisi).
    Et dernier point qui me semble important , ça permet d'abstraire le système de fichiers , ce qui ajoute une couche de sécurité supplémentaire.

    L'intérêt d'un fichier c'est que c'est plus rapide qu'un appel à la DB et que généralement on va venir mettre en cache l'objet PHP généré à partir de ce fichier.

    Mon framework se base sur le très classique /module/action/parametres avec possibilité de légère modification via des règles qui permettent de matché une url avec certains controller. Je trouve ça pratique et bien plus simple que devoir me farcir des fichier de config à chaque fois que j'écris un controller.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Catégoriser les frameworks PHP
    Par randriano dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 13/02/2015, 12h25
  2. Isoler les scripts PHP dans leurs VHOST
    Par greg91 dans le forum Apache
    Réponses: 3
    Dernier message: 25/12/2014, 13h32
  3. Les framework PHP
    Par Issamoo dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 31/05/2014, 10h29
  4. Attaques web dans les framework php
    Par majduuus dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 14/05/2012, 14h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo