Depuis 2 semaines, je me suis (enfin) lancé dans mon projet Symfony ! Il s’agit de coder la nouvelle version de mon site, le PJEA (site de pronostics sur le sport automobile).

La première chose à noter, c’est que c’est TOTALEMENT différent de coder son projet perso que de suivre un tuto, genre Jobeet :) On a beau recopier à la main le bout de code, le copier-coller… on se dit qu’on comprend ce que ça fait…. mais quand on part d’une feuille blanche, c’est bien différent… Les débuts ont été laborieux…

Mes outils

Je vais commencer par détailler mes outils pour ce nouveau projet.

Bien que toujours fidèle à mon Windows Vista, il faut se rendre à l’évidence… coder sous Symfony demande d’être sous un système Linux… Donc, la parade, pour pas non plus changer toutes mes habitudes… la virtualisation !

J’ai donc installé VirtualBox, et virtualisé avec Ubuntu 8. L’installation du packetage minimum fait (un apache, un mysql…), j’ai commencé à chercher un éditeur plus sympathique que Vim… J’ai jeté mon dévolu sur Eclipse PDT 2.0. Très pratique, beaucoup plus maniable que Vim… De l’autocomplétion, une analyse du code en live pour les oublis de  » ;  » ou autre… A côté de ça, un terminal, pour pouvoir lancer les commandes Symfony… et hop, en avannt !

Les premières lignes

Le projet généré, la première étape a été de créer le schema.yml, le fichier qui permet de définir la base de données. Histoire de commencer en douceur, je me suis limité en nombre de tables… 7 tables pour l’instant, avec le minimum de champs dedans. Le premier objectif est de pouvoir s’inscrire au site, se connecter, et faire des pronostics. Quand cela marchera, j’ajouterai les autres fonctionnalités (et elles sont nombreuses…).

Pour le module de connexion/inscription, ma première étape, j’ai préféré le recodé entièrement au lieu d’utiliser le plugin sfGuard.Ca me permettait de commencer en douceur… Je me suis quand même inspiré du plugin, quand j’étais bloqué dans mon code.

Ca m’a pris du temps, mais c’est bon, à présent, ça fonctionne bien… Avec pose de cookie si le joueur veut être connecté à la prochaine visite… de l’ajax (utilisation de Mootools, une librairie légère est très sympahique à utiliser).

Je me suis ensuite attaqué au module « prono », qui permet au joueur de faire ses pronostics. Pas mal de complications là… J’ai crée mon propre « validator » pour mon formulaire (on ne doit pas pouvoir pronostiquer 2 fois le même pilote).

De grosses difficultés avec la gestion des timestamp et des datetime… La comparaison ne voulait pas se faire… Heureusement, après de longues recherches, la fonction strtotime() m’a sauvée la vie :)

Côté formulaire aussi, pré-remplir les <select> avec les valeurs précédemment rentrées par le joueur (si il veut modifier son prono, il falllait que le formulaire soit pré-remplit avec les anciennes pilotes choisis). J’ai demandé un peu d’aide sur le forum de la communauté Symfony… J’y reviendrai dans la partie « Bilan »…

Au final, après ces 2 semaines (pas intensives non plus, je vous rassure :) ), je suis arrivé à mon premier objectif. Mes 2 modules fonctionnent ! Je vais pouvoir attaquer de nouvelles fonctionnalités.

Bilan personnel

Quel bonheur la programmation « agile ». Certes, il y a beaucoup de fichiers, beaucoup de dossiers… mais comme tout est agencé de façon parfaitement logique, on peut apporter des modifications au fiur et à mesure du développement. On commence par le minimum de ce que doit faire la fonction, et on étoffe au fur et à mesure.

La refactorisation est aussi indispensable. Dès que quelque chose fonctionne, il faut prendre le temps de réorganiser le code (placer ce qui a rapport aux données dans les fonctions liées à la gestion de la base de données « objet »… créer des classes séparées… ne pas répéter son code en différents endroits… et toujours bien respecter le principe MVC (Modèle-Vue-Controleur).

Dans les déceptions… Un peu déçu quand même par la communauté Symfony… J’ai posé 2 questions sur le forum… La première, j’ai du la relancer pour que quelqu’un s’intéresse à moi… la deuxième attend toujours… Et pourtant, ce n’est pas des questions que j’ai posé par flemme de chercher… J’ai d’ailleurs non sans mal trouvé la réponse à ma deuxième question tout seul… Je me suis donc auto répondu… Bien évidemment, je suis conscient que ça n’est pas leur métier de répondre aux questions, et qu’ils doivent voir passer pas mal de questions stupides tout les jours… mais bon, ça fait pas trop esprit ouvert… Pis la première personne a m’avoir répondu a envoyé de façon bien stupide un lien vers un autre topic, que j’avais déjà lu, et qui ne répodnait pas du tout à ma question…

Pour finir, dans mon approche de la découverte de ce framework… J’ai pas pris la meilleure décision je pense… Je me suis lu la totalité de la doc (un genre de gros pdf de 350 pages, expliquant les bases de tout le fframework) avant de commencer. Ca m’a pris du temps, et au final, je suis forcé de reprendre pleins de parties… Car c’est quand on est vraiment confronté au problème qu’on comprend l’intérêt de telle ou telle fonction.

Mon petit conseil donc… Lire le minimum pour commencer… A la limite les introductions à chaque partie du framework… Et aller lire en détail seulement quand on se retrouve confronté au problème (les filtres par exemple, qui permettent de faire des actions avant ou après chaque requête – typiquement, l’utilisateur n’est pas connecté, on regarde si il a un cookie pour se connecter automatiquement) – j’étais passé à côté quand je l’ai lu la première fois.. j’ai du tout me relire cette partie quand j’étais confronté au problème.

Conclusion

A suivre… Et oui, je suis loin d’en avoir terminé avec ce nouveau site ! Mais plus je maîtriserai le framework, et plus le développement ira vite ! J’ai déjà pas mal gagné en rapidité par rapport au tout début.

A partir d’aujourd’hui, je vais ajouter de nouvelles tables, et de nouveaux modules à mon application… Développement agile… On avance petits pas par petits pas !

A bientot donc, pour de nouvelles aventures :)

Be Sociable, Share!
Trackback

3 comments untill now

  1. Bonjour Xavier,

    Intéressant de lire les pas d’un débutant, j’ai pour ma part suivi la formation Sensio sur les bases du Framework. Elle est vraiment bien fichue et permet de se lancer corps et âme dans le FW.
    Quand tu as des questions, je te conseil sérieusement de passer par le salon IRC plutôt que par le forum, nous sommes souvent connectés par dizaine et réactifs.
    Je t’ajoute à mes flux RSS, au plaisir de lire la suite de tes aventures et de voir ton site en ligne :)

    Julien.

  2. Merci pour ce commentaire ! Ainsi que le conseil de l’IRC.
    Pas beaucoup eu le temps d’avancer sur mon projet ces derniers temps… Mais ça va revenir ! Et je continuerai de mettre ici mes impressions.

  3. Bonjour,
    J’ai déja visité plusieurs fois votre site, et je me décide enfin a commenter un article :)

    J’ai l’impression que nous avons commencé quasiment en même temps, et je vous rejoins tout a fait dans vos commentaires !

    Je vais dès a présent vous suivre également !

    Pour info : je me suis lancé sur deux projets simultanement sur symfony (un perso et un pro) malheureusement , je ne prends pas assez le temps de remplir mon site… Promis je vais m’y mettre !