🏠 Accueil

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...