Skate in Mars

Aller au contenu | Aller au menu | Aller à la recherche

Tag - developpement

Fil des billets - Fil des commentaires

lundi 24 décembre 2007

En vrac \o/

Et oui vous croyiez pouvoir y échapper mais le revoila, le billet de liens !
Pas mal comme cadeau de Noël non ? (non)

Bref, passons aux choses "sérieuses" :

  • 9 CSS Ethics Every Designer Should Have Quelques bonnes pratiques en CSS
  • Kohana PHP est un framework en PHP5 basé originellement sur Codeigniter. Il est complètement objet et corrige pas mal de manques et problèmes de CI. Il manque toutefois encore un peu de maturité avant de pleinement le remplacer, et les docs laissent à désirer. Un projet à surveiller donc (le développement avancant très vite, préférez la version svn pour tester).
  • Des sorties côté rails pour les endormis : Rails 2.0 (2.0.2), et Rubygems 1.0 (1.0.1)
  • En parlant de rails, les slides de la conf Paris on rails 2007 sont dispos et y'en a des biens (<3 Christophe Porteneuve as usual). Si vous kiffez les slides mettez-en sous le sapin voila aussi ceux de Paris Web 2007, qui sont moins bien (la preuve, yen a au format powerpoint)
  • En enfin je m'aperçois que j'ai honteusement oublié de faire un billet sur le Barcamp Marseille (d'un autre côté c'était pas si intéressant donc c'est pas trop grave :) ). Voila tout de même le lien vers la conf pour les intéressés : http://barcamp.org/BarCampMarseille1
  • Et pour finir (oui je finis 2 fois) sachez que skateinmars.net tourne maintenant sous nginx en frontend :) apache est toujours la pour les quelques repositories svn et pour les scripts php (bien que je pourrais le remplacer par php-cgi, j'héberge quelques personnes qui ont besoin de htaccess apache)
Sur ce, joyeux Noël toussa toussa o/

mercredi 23 mai 2007

CodeIgniter, un framework PHP qu'il est bien

Ruby on Rails est peut-être à la mode mais je n'ai jamais été trop utilisateur des dernières technologies jusqu'à maintenant même si j'aime me tenir au courant. Pourtant, les frameworks web permettent de gagner énormément de temps en s'occupant de pas mal de tâches répétitives qui ne sont jamais fun pour un développeur.


Pour regagner un peu de fun dans le développement PHP de nombreux frameworks ont commencé à apparaître tels CakePHP, Symfony ou encore le Zend Framework qui deviendra certainement bientôt celui de référence car écrit par l'équipe des développeurs de PHP eux-mêmes.

J'avais besoin de rapidement créer quelques pages pour mon site (http://skateinmars.net) et j'ai voulu voir ce qui se cachait derrière l'idée d'un framework.

Voici donc CodeIgniter (http://codeigniter.com/) qui me semble un peu moins connu mais qui mets l'accent sur la simplicité et la légèreté. Il propose donc peu de fonctions mais est très modulaire, et se veut compatible avec PHP4.

La simplicité, est réellement la raison clé du choix de ce framework. Contrairement à une "usine à gaz" comme Symfony (ce n'est pas forcément un défaut, les créateurs annoncant eux-mêmes Symfony comme réservé aux grosses applications web de niveau "corporate"), CodeIgniter n'a pas d'interface en ligne de commande, ni de fichiers de configs évolués pour générer une partie du code.
Pour l'installer on va donc simplement décompresser un fichier, modifier deux/trois variables dans un fichier de config en PHP et c'est prêt.


Mais au lieu de comparer CodeIgniter (que j'appellerai CI pour moins me compliquer à écrire) à d'autres frameworks voyons plutiôt les features qu'il propose et que l'on peut attendre d'un framework aujourd'hui, ainsi que ses particularités ce qui vous permettra de choisir par vous-même.

Premier point, l'architecture : comme beaucoup de frameworks, y compris le célèbre Ruby On Rails, CI propose un système Modèle-Vue-Contrôleur. Pour expliquer rapidement, ce modèle sépare le code en trois parties :
  • d'un côté l'aspect présentation (Vue) qui représente comment l'utilisateur verra l'information. Le plus souvent ce sera donc une page web mais cela peut aussi être un flux RSS, un fichier XML etc... cette partie gérera donc par exemple l'utilisation des templates à utiliser.
  • de l'autre le côté Modèle qui définit comment accéder aux données et les modifier. Par exemple, c'est ici qu'on pourra y définir les méthodes nécessaires à la création d'une news ou à la récupération des commentaires d'un article de blog.
  • Le contrôleur va lui servir à relier les deux autres parties : selon ce que demande le visiteur, il va chercher les données appropriées depuis le modèle, puis les transmettre à la vue qui conviendra.
Dans la pratique, on utilisera une classe pour chaque modèle souhaité (par exemple, articles, ou commentaires), que l'on nommera et placera dans un dossier models définit par CI.
Les vues seront des fichiers PHP classiques ou se mélangeront code PHP et HTML. Des helpers sont mis à dispositions, ce sont des fonctions qui permettent de faciliter l'écriture d'un lien, d'un formulaire, etc...
CI étant modulaire, on peut tout à fait utiliser un moteur de template classique comme Smarty ou TinyButStrong sans problèmes particuliers (à part peut-être la nécessité de s'occuper différemment du cache des fichiers).

Le contrôleur est la partie la plus interressante. En fait, c'est la seule partie qui est strictement necessaire. On peut d'ailleurs y mélanger des tâches dévolues aux vues ou au modèle sans problème, même si cela reste déconseillé pour des raisons d'organisations et de clarté.
Les contrôleurs seront également déterminants car ils définissent les URLs du site.
Par exemple, le contrôleur Contact sera une classe Contact (qui étend la classe controller) placée dans le fichier contact.php du dossier controllers. On y créera les fonctions index, et par exemple send.
Le visiteur ira ensuite sur site.com/contact, et CI déclenchera automatiquement la fonction index de la classe Contact. Magique :)
Si la fonction send prend en paramètre une personne, le visiteur cliquera ensuite sur un lien vers site.com/contact/send/bob, et la fonction send pourra ainsi chercher une vue qui par exemple affichera un formulaire pour contacter l'utilisateur Bob.

Voila donc l'utilisation de base de CI. Il propose bien sûr d'autres fonctionnalités, comme l'URI routing : on peut par ce moyen rediriger une demande d'URL vers un autre URL pour utiliser un autre contrôleur et une autre fonction (de manière plus ou moins complexe grâce aux expressions régulières).

CI propose de plus une série de librairies pour faciliter les tâches courantes du développement web : l'envoi de mail, l'accès à un serveur FTP, la manipulation d'images et de fichiers, les sessions et ainsi de suite.

CI permet également de créer ses propres librairies, ses plug-ins (simples fonctions) ou encore l'utilisation de hooks, fonctions qui agissent à différents moments du traitement de la requête pour modifier le comportement de CI lui-même, encore une fois preuve de sa modularité.


Voila pour une introduction à CodeIgniter qui ne va pas très loin (je n'ai pas parlé du scaffolding par exemple), mais j'espère vous avoir convaincu de l'utilité d'un framework, et de donner une chance à CodeIgniter :)
Sachez que le niveau requis n'est pas très élevé, il vous suffira de connaître (sans forcément avoir déjà pratiqué) les bases de la programmation objet et d'avoir un minimum d'expérience avec PHP ne serait-ce que pour comprendre les objectifs et les besoins auxquels on fait face lors de la création d'un site ou d'un application web.


Les liens à ne pas manquer pour aller plus loin :
  • http://codeigniter.com/ Le site officiel
  • La documentation, très bien faite avec de nombreux exemples
  • Le wiki regorges de helpers, bibliothèques et autre plugins créées par les utilisateurs. Le forum, du peu que j'en ai vu, est quand à lui assez actif et une assez bonne ambiance y règne (quoique les utilisateurs se clashent parfois avec les devs de CodeIgniter, employés de EllisLab).
  • Certains utilisateurs ont d'ailleurs créé CIForge qui regroupe des projets autour de CI.
  • Et pour finir, les screencasts (à la mode depuis RoR) qui vous donneront une idée de CI grâce à un tutorial vidéo.