Bonjour,
Je suis en train de redévelopper une sorte de panneau d'administration pour site web. Le principe est simple : le site a une zone admin, où les utilisateurs peuvent accéder, et de laquelle ils peuvent gérer divers "modules" : newser, faq, utilisateurs, etc...
Jusqu'à maintenant, c'était fait de manière partiellement modulaire, dans le sens où chaque "module" avait un fichier principal (par exemple news.php), qui utilise un composant global pour l'authentification (include auth.inc.php) et qui sinon fait tout le reste "dans son coin". Donc pour ajouter un module, il faut juste modifier le script d'authentification pour qu'il gère les droits relatifs à ce module, ainsi que le module de gestion des utilisateurs, afin à nouveau d'intégrer la gestion des droits à ce nouveau module. Pour l'intégration au "frontend" du site, c'est fait à la main.
J'aimerais maintenant faire quelque chose d'encore plus simple : un dossier "modules", ou extensions, dans lequel on dépose simplement les modules que l'on souhaite utiliser. Ensuite, les modules sont visibles depuis l'admin mais pas encore installés. Un clic sur un lien installe le module (et effectue les traitement spécifiques au modules : création de tables, dossiers, etc...) et c'est bon !
La gestion des droits des utilisateurs se fait aussi automatiquement via un module qui gère le tout, et l'authentification est gérée par un gros composant principal, qui "dirige" tous les modules et leur donne accès à la DB, aux fichiers de config, aux données sur l'utilisateur (droits, etc...).
J'ai quelques idées sur comment faire ça (j'ai un peu regardé divers projets qui me plaisaient et/ou qui ont l'air pas trop mal structurés, comme phpBB, punBB, vanillla, Joomla, etc...) : une classe principale qui s'occupe, comme décrit plus haut, des accès à la DB et de l'authentification, et les modules qui eux implémentent une interface.
Que pensez-vous de cette approche ? Avez-vous de la lecture à me conseiller, ou des conseils à me donner ?
J'ai quelques soucis avec cette approche : je ne sais pas comment gérer les fichiers de configuration (des includes ? des fichiers xml à loader ?), ni comment permettre aux modules de "travailler" comme ils veulent tout en ayant accès aux attributs de la "grosse classe" qui gère tout, c'est-à-dire comment faire le lien entre le core et les modules ?
De plus, j'aimerais bien utiliser un système de templates, afin de séparer le plus possible le traitement de l'affichage, et aussi permettre de changer de layout facilement (thèmes ?). Le problème, c'est que chaque module a ses propres templates, mais aussi devra utiliser des templates "globaux" pour les headers/footers, afin d'assurer une certaine cohérence dans la zone admin. J'ai de la peine à m'y retrouver, surtout avec les différentes paths relatifs et/ou absolus, etc... !
Bref, grosse tartine, grosse ambition aussi, mais ça me tient à coeur! Je pense que ça doit être réalisable ! Et j'attends vos commentaires !
Partager