Aller au contenu

Code Igniter : ou comment taquiner RoR


davidm

Sujets conseillés

Je viens d'en parler sur mon blog, Code Igniter est un framework PHP léger permettant de construire facilement et rapidement des applications web.

Pour illustrer ce propos, vous trouverez deux vidéos sur le site codeigniter.com qui font étrangement penser à celles produite à l'époque pour Ruby On Rails :P On y démontre notamment qu'on peut construire une application de blog en 20 minutes...

Pour la petite histoire, comme RoR, Code Igniter est basé sur le modèle Modèle-Vue-Contrôleur (MVC). La logique reste donc la même que RoR, mais sans la barrière du language que beaucoup de développeurs rencontrent avec Ruby.

Très certainement un framework de développement web très prometteur qui pourrait bien damer le pion à Ruby On Rails, pour la simple et bonne raison que PHP est un langage bien plus répandu que Ruby... et que CodeIgniter peut être installé sur n'importe quel hébergeur proposant PHP4...

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

ayant pratiqué RoR depuis plusierus mois, et étant un adepte de PHP j'ai pris plaisir à regarder ces vidéo à la mode RoR ;)

Si la majorité des coders actuellement convaincu par PHP devaient se diriger vers un framework (malheureusement cela ne représente qu'une minorité de gens ayant de bonne pratiques en programmation) je pense que CodeIgniter aura du succès effectivement... et je dirais au grand dam de RoR. Le codeur sont parfois trop frilleux et rétissant lorsqu'il s'agit d'apprentre un nouveau langage.

Malgré cela et après avoir vu ces vidéos et parcourus le manuel d'utilisateur, je ne suis pas convaincu que le modèle MVC soit appliqué correctement dans ce framework, il me semble qu'il y a un élément primordial de l'abstraction a été omis... La partie "Modèle" : la validation des données, la récupération selective et les autres tâches étant étroitement liée à aux sources de données externes sont tout bonnement incluses dans les contrôleurs, mais peut-être que j'ai mal interprété les explications...

Deuxièmement RoR est basé sur des conventions, ce qui simplifie le processus du développement car une fois ces conventions apprises on ne perd plus de temps à spécifier au contrôleur quelle vue doit être utilisée (à moins qu'on veuille contourner les conventions), quelle table doit être utilisée, ... Malheureusement CodeIgniter semble ne pas utiliser ces automatismes, ce qui fait que l'on se répète souvent (use_table, ...)... Je sais que contrairement à RoR, CodeIgniter ne se ventent pas d'une philosophie DRY (Don't Repeat Yourself), mais un effort devrait être fait dans ce sens à mon avis, c'est généralement ce qui convint les plus rétissant à se convertir à l'utilisation d'un framework (moins de lignes ;) )

La démarche est correcte à mon avis, un framework MVC "pur" serait toutefois plus utilisable...

Merci de m'avoir fait découvrir ce framework, il n'est pas impossible que je tente de développer un prochain projet interne en m'appuyant sur CodeIgniter.

P.S. : En lisant le forum (http://www.codeigniter.com/forums/viewthread/78/ , désolé je n'ai pas trouvé d'ancre pour mener directement au message concerné) l'auteur de CodeIngniter indique qu'il a inclus la partie "Modèle" volontairement dans les controlleurs car, en le citant :

A model typically refers to your database tables represented as classes so that you can use an active record approach for your queries.  Code Igniter does have active record capability, it just doesnt do it by generating classes that model your tables. Why?  Simplicity.  One of my goals was to eliminate the need to use the command line.  I wanted to eliminate having to generate classes dynamically so that people can use the framework even if they are on a shared hosting account without shell access or on accounts in which function like exec( ) are disabled, or without having to make directories writable to create the models..

En gros pour ceux qui ne parlent pas la langue de Shakespear, il ne souhait que le framework puisse fonctionner dans n'importe quel environement et donc qu'il ne soit pas nécessaire d'utiliser un invite de commande pour générer les classes dynamiquement... je ne trouve pas que ce soit une bonne raison...mais ce n'est que mon avis.

Modifié par TheRec
Lien vers le commentaire
Partager sur d’autres sites

The Rec, merci pour ton avis expert sur CodeIgniter ! Ca permet d'aller plus loin concernant le positionnement de ce framework... :D

Jok, connaissait Symfony et CakePHP mais pas encore PHP On Trax donc encore une découverte à tester !

Lien vers le commentaire
Partager sur d’autres sites

Oh "expert" je n'irais pas jusque là :D

Oui, PHP on Trax semble déjà bien "mieux" !

Le hic c'est le documentation apparemment, elle est en cours de rédation en partie. Bon elle le sera toujours (logiquement), mais je veux dire par la qu'elle n'est pas en quantité suffisante à première vue (une expérience en RoR aide beaucoup à mon avis)... Après rien n'empêche d'aller farfouiller dans les sources des classes ApplicationController /ActiveRecord. Le Wiki et la communauté à l'air d'être active.

L'inconvénient de PHP On Trax est qu'en dehors des dépendances habituelles (Serveur Web, PHP, moteur de bases de données), il est nécessaire d'avoir PEAR pour développer... apparemment on peut palier à cela en installant les libraiaires manuellement (en copiant les fichiers nécessaires) si elle ne sont pas disponibles. Il faut tout de même avoir accès au réprtoire "lib" de PHP, ce qui n'est pas le cas sur beaucoup d'hébergement mutualisés... à mon avis cela freinera l'engouement pour ce framework au niveau des développeurs "amateurs".

Je me permets de traduire une liste de frameworks PHP orientés MVC (en général) que j'ai trouvé dans une présentation de PHP on Trax :

PHP on Trax - Un Vrai framework clone de Ruby on Rails pour PHP (PHP5).

PhpMVC (Un port du framwork "Struts")

SolarPHP - Un framework PHP5. Basé sur MVC.

Cake - Un framework ressemblant à Ruby on Rails pour PHP. Licence MIT.

Biscuit - Similaire à Cake, utilise beaucoup plus de code procédural (à la place de code orienté objet). Licence BSD.

TaniPHP - Un framework ressemblant à Ruby on Rails pour PHP. Licecne LGPL.

Aukyla Framework PHP - Bonne idées: URI locales (wrappers de flux) et gestion de fichiers OpenDocument. Licence dual GPL/Commercial.

symfony - Juste un autre framework pour PHP5 ? Pobablement que non. Il prend le meilleur de Mojavi, Propel et Rails, et d'autres encore et regroupe le tout dans un framework intégré. Licence MIT.

Source: http://www.phpontrax.com/downloads/very_basic_test_app.tar (cette archvie contient une présentation PowerPoint)

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...