Salut, Bon, désolé, je n'ai pas pu m'en empêcher ; je vais encore faire une grosse modif sur Galette... J'ai déjà commencé en fait, mais sur un taff hors ligne... un de plus... % git branch |grep -c feature 11 :p Le constat : actuellement, les différentes pages de Galette correspondent toutes à un fichier PHP distinct. Cette façon de faire implique une certaine redondance parfois, et devient à mes yeux un peu trop compliquée à gérer. Les URL de Galette sont assez longues et complexes, francisées pour certaines, pas pour d'autres ; c'est un joyeux boxon. Et je ne parle pas des chemins pour accéder aux parties "publiques" des plugins, ni du dossier "public" qui me casse les noix depuis bien longtemps :D La solution : utiliser un système de routes ; via un framework. L'idée, c'est d'avoir des URL du type : * galette/members (pour la liste des membres) * galette/member/{id} (pour afficher un membre) * galette/member/{id}/edit (pour modifier un membre) * galette/member/add (pour ajouter un membre) * galette/paypal/form (pour l'url du formulaire paypal fourni par un plugin). Ces chemins sont parfaitement arbitraires et non définitifs, mais l'idée est là. Les actuels bouts de code "métier" qui se trouvent dans les fichiers php seront aussi totalement séparés, on aurait par exemple une route pour le filtrage du type "galette/filter", actuellement c'est fait dans gestion_adherents.php. J'ai envisagé de n'utiliser qu'une bibliothèque qui fournisse ces possibilités, mais je n'en ai pas trouvé de réellement adaptée. C'était donc soit partir sur une bibliothèque existante et la modifier pour les besoins de la cause (beurk, trop compliqué de remonter les modifications qui pourraient être apportées par l'auteur original) ; soit partir sur du Zend, mais je trouve la mise en place à la mode Zend trop compliquée... Je suis tombé sur un micro framework que je ne connaissais pas, Slim : http://www.slimframework.com/ J'ai donc commencé à implémenter ça doucettement, je trouve le résultat assez convainquant pour ma part. Ce ne sera clairement pas au menu de la 0.7.3, mais je n'exclus pas que ce soit fait pour la 0.7.4 ; si toutefois je décide au final de l'intégrer à Galette (ça peut totu aussi bien être au menu de galette 0.9.9 hein :p). Si vous avez des avis/remarques/whatever, je suis preneur :) Le code (comme dit en début de message) n'est pas publié ; mais je le tiens à disposition évidemment si quelqu'un veut voir ce que ça donne et/ou filer un coup de main. *À noter* : cette modification implique de *très nombreuses* modifications dans Galette, à quasiment tous les niveaux... Les modifications ne sont pas énormes dans beaucoup de cas, mais il faut les faire. Note complémentaire : Smarty3 "implémente" un concept d'erreurs attendues (ce n'est pas moi qui l'invente : http://www.smarty.net/docs/en/api.mute.expected.errors.tpl). Par exemple, la présence de clés demandées dans des tableaux n'est pas testée, et on se chope des "undefined index" à tous les coups. Avec Slim, je ne parviens pas à le faire taire (la fonction mute reste sans effet). Je commence doucement à me demander si je ne devrais pas envisager également à un moment ou un autre le changement du système de templates aussi (je lorgne vers Twig qui semble vraiment pas mal non plus). Des avis/remarques/whatever ? Roman off pour aujourd'hui, ++ -- Johan
Attachment:
signature.asc
Description: OpenPGP digital signature