Sortie de Minz 0.4
(lecture : 4 minutes)
Suite Ă la version 0.3 du mois prĂ©cĂ©dent jâavais quelques amĂ©liorations Ă apporter Ă mon framework.
Tout dâabord, le routage des urls internes au site avait Ă©tĂ© un gros morceau, mais trĂšs incomplet Ă mes yeux. Aussi jâavais vraiment besoin dâamĂ©liorer ceci. Câest dĂ©sormais chose faite : quelques bugs ont Ă©tĂ© corrigĂ©s et surtout, le routage dâurls dynamiques est dĂ©sormais possible ! âș Ainsi, si on dĂ©finit le code suivant (tirĂ© de mon appli de galeries photos) dans la table de routage :
array(
'route' => '/see/galerie/*/photo/*',
'controller' => 'index',
'action' => 'see',
'params' => array('gal', 'photo')
),
lâurl http://test.exemple/see/galerie/2/photo/42 (par exemple) sera routĂ©e vers le contrĂŽleur index, lâaction see, et avec les paramĂštres $_GET['gal']=2 et $_GET['photo']=42. CâĂ©tait vraiment un gros morceau, pas facile Ă mettre en place, mais je suis content de lâavoir fait !
Un autre morceau que je voulais coder Ă©tait une classe de configuration, au lieu de passer par des constantes globales. Jâen ai profitĂ© pour revoir le fichier de configuration qui sera dĂ©sormais un fichier .ini (mĂȘme si le fichier de constantes est pris en charge). Les paramĂštres environment et use_url_rewriting ont Ă©tĂ© ajoutĂ©s et sont indispensables. environment permet de dĂ©finir un niveau de verbositĂ© (les logs et les erreurs seront plus ou moins bavards). use_url_rewriting quant Ă lui sert Ă dire si on souhaite utiliser lâurl_rewriting ou non. Dâailleurs il nâexiste pas de fonction php servant Ă savoir si ce module est activĂ© ou non, et câest bien dommage âč
Je viens de citer les logs. En effet, je trouvais ça intĂ©ressant de les intĂ©grer au cĆur du framework afin de dĂ©bugguer une application. Pour le moment câest perfectible, mais je suis content du rĂ©sultat.
Jâai ajoutĂ© une classe Url permettant de crĂ©er dynamiquement les urls internes au site. En effet, Ă cause de lâurl rewriting et de mon systĂšme de routage, il pouvait y avoir des problĂšmes si jamais le serveur ne permet pas de réécrire les url. Mais maintenant câest de lâhistoire ancienne ! âș La classe Url, Ă travers sa mĂ©thode statique display() va sâoccuper de voir si on utilise lâurl rewriting (Ă travers le paramĂštre de configuration dĂ©jĂ nommĂ© plus haut). Si oui, il va chercher dans la table de routage si lâurl que lâon souhaite Ă©crire possĂšde une route et si oui, la construit pour lâaffichage. Si non, il construit lâurl de façon plus basique (du type http://test.exemple/?c=blog&a=voir&id=42 ). Au final ça rend le framework trĂšs puissant car il gĂšre tout seul lâurl rewriting, et on nâa plus Ă se soucier de savoir si le module est activĂ© sur le serveur âș
Et pour construire lâurl, la ligne suivante suffit :
echo $this->url->display(array(
'c' => 'blog',
'a' => 'see',
'params' => array('id' => 42)
));
... bon dâaccord, ça peut paraĂźtre lourd, mais au vu des bĂ©nĂ©fices, je pense que ça vaut largement le coup ;)
Enfin, derniĂšre amĂ©lioration importante, la gestion des pages dâerreurs a Ă©tĂ© amĂ©liorĂ©e. Avant, je me contentais dâafficher une page blanche avec les messages dâerreurs. DĂ©sormais, les erreurs peuvent ĂȘtre intĂ©grĂ©es au design du site. Comme dit prĂ©cĂ©demment, les erreurs affichĂ©es sont gĂ©rĂ©es grĂące au niveau de verbositĂ© dĂ©fini par le paramĂštre de configuration environment.
Et sinon jâai corrigĂ© plusieurs petits bugs, fait quelques retouches, bricolĂ© par-ci par-lĂ . Bref, cette version 0.4 nâest plus vraiment compatible avec les versions prĂ©cĂ©dentes, bien quâune migration puisse sans doute se faire sans trop de mal. Je lâai bien fait pour mon appli de galeries photos ;) Le plus compliquĂ© sera de migrer mon site sur cette version, mais ça vaudra surement le coup ! Jâai vraiment hĂąte dâintĂ©grer les urls dynamiques et ma galerie photos... malheureusement ma connexion Internet ne me permet pas de faire du ftp ni sftp. Bref, ça va encore devoir attendre ;)
Pour la prochaine version, jâespĂšre pouvoir intĂ©grer une classe pour gĂ©rer lâinternationalisation du site (ce qui va demander pas mal de boulot), corriger des bugs (en espĂ©rant que cela ne soit pas nĂ©cessaire :p), amĂ©liorer tout ce qui est Model et DAO et surtout, proposer de la documentation consĂ©quente ! Jâai dĂ©jĂ commencĂ© Ă rĂ©aliser un document, mais ça demande pas mal de boulot pour synthĂ©tiser, faire des exemples, des schĂ©mas, etc. Puis avec cette nouvelle version, il y a quelques bidules Ă remanier...