Frameworks CakePHP vs Symfony
Monday, 19. May 2008, 15:34:11
En effet, l'équipe de production de ma boîte bossant sur le merveilleur environnement Ruby On Rails et, je l'avoue, n'ayant pas la foi d'apprendre le Ruby, j'ai décidé de me rabattre sur un framework PHP.
1 - Qu'est-ce qu'un framework:
Pour faire simple, un framework est un environnement de développement intégrant dès l'origine certaines routines ou fonctions afin de faire gagner du temps aux développeurs (RAD: Rapid Application Developpement). La pluspart d'entre eux s'appuis sur des standards de codage assez rigides afin de garantir au maximum une logique de programmation identique d'un développeur à l'autre (avec plus ou moins de réussite).
2 - Les avantages:
Ils sont assez nombreux mais nous nous contenterons d'une liste des caractéristiques les plus intéressantes (à mon goût):
- Ajax intégré : des fonctions déjà prêtes à l'emploi vous permettent de réaliser rapidement et simplement des fonctions Ajax, basées sur les bibliothèques les plus connues (prototype, scriptaculous, ...)
- Modèle MVC : les modèles d'objets, les traitements et les vues (présentation) sont entièrement séparées, ce qui permet une meilleure maintenabilité et une facilité dans le changement d'apparence sans toucher au code. De plus, un intégrateur web (à ne pas confondre avec un développeur) pourra sans mal changer le style du site sans détruire les éventuelles (trop grosses) parties de code incluses dans la page.
- Gestion simple des BDD : si les conventions de nomage sont respectées, vous pouvez aisément manipuler des enregistrements en base de donnée sans taper une ligne de code (CRUD).
- Génération des opérations CRUD (Create Read Update Delete): à partir du shéma de base de données ou de vos modèles d'objets, vous pouvez aisément générer les écrans de base (ou scaffold = échaffaudage) afin d'effectuer les manipulations de base sur vos enregistrements. Dans les cas les plus simples, il ne reste qu'à paufiner l'interface graphique (ex:manipulation d'utilisateurs).
- Evolutivité : certains permettent de mettre à jour, par une simple ligne de commande, le framework indépendamment du code développé auparavant afin de profiter de nouvelles fonctionnalités ou tout simplement de corrections de bugs.
- Respect des stades de développement : pour ceux qui ne le savent pas, un site internet, comme tout autre application, se doit de passer par les stades "développement", "test" et "production". Les frameworks les plus aboutis intègrent la gestion de bases de données propres à chaque étapes ainsi que l'affichage ou non de traces ou logs lors du parcours du site.
- URL simples : les plus récents s'appuient sur un système de réécriture des urls (url rewriting) s'appuyant (ou pas) sur le module mod_rewrite du serveur Apache. Les pages sont mieux référencées et on se passe agréablement des adresses du type index.php?action=afficher&article=48.
On va s'arrêter là pour l'instant.
3 - Quand utiliser un framework ?
L'utilisation d'un framework web est plutôt adaptée lors de la création d'applications web complexes. En effet, le gain de temps en terme de développement n'est pas instantanné puisque certaines parties inhérentes à la mise en place d'un framework sont incompréssibles (installation, configuration, ...). Ainsi, si vous voulez juste ajouter des effets ajax à votre site, l'utilisation directe d'une librairie javascript come scriptaculous sera profitable à la mise en place d'un framework.
4 - Les deux frameworks PHP en lice :
Comme l'indique le titre, j'ai arrêté mon choix sur deux frameworks assez répandus (mais pas forcément très connus) à savoir CakePHP et Symfony.
5 - Pourquoi eux?
Et pourquoi pas? Non plus sérieusement car un rapide coup d'oeil sur des tableaux comparatifs disponibles sur le net les donnent commes les plus aboutis pour PHP.
De plus, et il faut bien que je l'avoue, Symfony est supporté par une agence web française (Sensiolabs... stupeur une concurrente
6 - CakePHP ... is it really cake?
Ok, on se rend sur le site de CakePHP et on comprend assez vite le message... Développer avec CakePHP, c'est du gâteau (d'où le nom).
Après avoir téléchargé le framework, dézippé ce dernier sous mon bon ubuntu (aaah, environnement de dev chéri), on se lance assez rapidement dans le cookbook (fr: livre de recettes).
L'ouvrage en ligne est plutôt bien découpé et on arrive assez rapidement à comprendre le fonctionnement de l'environnement: le code est clair, peu de lignes nécessaires pour les fonctions basiques... Je me suis même surpris à comprendre le fonctionnement du routing que je n'avais pas tout de suite saisi sous Symfony (really cake?).
Arrivant dans le dernier quart du book, on commence à peine à aborder la commande "bake", qui permet de générer les scaffolds, à savoir les interfaces CRUD des modèles que vous avez implémenté.
Le regret concernant ce framework porte réellement sur cette partie, ce point mériterait d'être plus détaillé car ce genre de scripts peuvent faire gagner un temps précieux.
To be continued



