La nouvelle version de Symfony, la 1.2 est sortie dernièrement… Et comme une bonne nouvelle n’arrive jamais seule, ils nous proposent un tutoriel.

Ce tutoriel est dans le genre d’Askeet, 1 heure par jour, pendant 24 jours… Certes, un peu plus long que de manger le chocolat Kinder du calendrier de l’avent, mais bien plus intéressant ! Si nous retrouvons les qualités du précédent tutorial (qui je le rappelle, n’avait pas été adapté à Symfony 1.1… ), ce nouveau tuto devrait permettre d’avoir les bases complètes pour attaquer la programmation d’un super site en Symfony !

Je vous tiendrais au courant dès que j’aurai eu le temps de m’y mettre.

Le lien : http://www.symfony-project.org/jobeet/1_2/en/

(un nouvel article par jour, jusqu’au 24 décembre !)

La semaine dernière, j’ai voulu me lancer dans le tutorial d’Askeet, proposé par l’équipe de Symfony. La proposition semble intéressante : en 24 petits tutorials d’environ 1 heure chacun, on nous annonce une découverte de l’ensemble des fonctions de Symfony, mais surtout, une découverte de la programmation en mode « agile ».

La programmation en mode « agile » :

C’est tout simplement l’idée qu’on programme « au fur et à mesure ». Pas de tonnes de schémas XML et autres listes de fonctionnalités à intégrer… On commence par développer tranquillement une fonction… ça marche ? on continu, on en ajoute d’autres… Bref, la structure du projet fait qu’il est très aisé d’ajouter des fonctionnalités supplementaires.

Cela passe par la mise en place de tests (unitaires et fonctionnels), qui permettent de d’assurer,  après la mise en place d’une nouvelle fonctionnalité, que toutes les précédentes fonctionnent toujours.

Bref, proposition alléchante… Très différente de ce qu’on a l’habitude de faire !

Présentation de Askeet :

Tout aussi alléchant, le site qu’on nous propose de réaliser. Pas un vulgaire blog ou un système de news léger, mais une véritable application « sociale », où des utilisateurs posent des questions… Et tout le monde peut les aider à y répondre… Avec notations des questions et des réponses, à la mode 2.0 bien sur !

Démo ici : http://www.askeet.com/

Bref, je me voyais déjà réutiliser toutes ses nouvelles connaissances dans les 2 projets Symfony qui sont dans mes cartons : le PJEA, et un autre projet « surprise » :)

Go go goooo :

Et me voila parti pour faire joujou avec tout ça… Les premiers « jours » se passent à merveille (le tutorial est en fait décomposé en 24 jours, comme un calendrier de l’avent !).

  • Jour 1 : installation de Symfony

Rapide, symfony étant déjà installé sur mon pc… J’ai quand même mis en place un svn… Grande première…

  • 2ème journée : base de données

La création de la base de données objet se passe bien… et… première désillusion… la commande pour générer le module de “tests” renvoie une erreur fatale…

Après 30 secondes de recherches sur le forum, la nouvelle tombe… Askeet est fait pour symfony 1.0… Et la version actuelle est la 1.1…

Bon, tant pis pour aujourd’hui, je fourbe en utilisant la commande utilisée en symfony 1.1… Et ça marche !

  • mais rapidement…

Les 3-4 quelques jours suivants se passent encore difficilement, avec pas mal de recherches pour transformer les commandes 1.0 en 1.1…

Mais il s’avère que les différences entre Symfony 1.0 et 1.1 sont bien trop importantes… Notamment au niveau des formulaires (jour 6). Installer une 1.0 sur mon pc pour finir Askeet, pour apprendre des notions « désuètes » m’enchante guère…

Grosse déception donc, j’attendais beaucoup de ce tuto pour bien comprendre les bases de Sumfony, la méthode de développement, approfondir les notions de modules/actions…

Surtout que de nombreuses fonctionnalités de ce projet m’intéressaient pour mes futurs projets (votes, connexion…).

Conclusion

J’ai donc du m’arrêter à peine au quart du parcours… Trop de complications pour adapter Askeet à la nouvelle version de Symfony.

Je vais quand même essayer de lire la fin du tutorial, mais sans tester les bouts de codes en parallèle (intérêt bien plus limité du coup…). Il doit quand même y avoir des notions intéressantes à comprendre. Surtout qu’il n’y a pas de tutorial équivalent pour le nouveau Symfony.

Ayé, je viens enfin de finir les 400 et quelques pages de la documentation officielle de Symfony ! Je vais donc vous faire une petite présentation de ce framework PHP…

J’ai découvert par pur hasard ce framework début aout… Et j’ai été directement conquis par le concept. Très proche de la philosophie de Ruby On Rails, que j’avais commencé à regarder, tout en restant du PHP… Et donc, plus simple à déployer. Le tout, sans avoir à réapprendre un nouveau langage de programmation !

Les bases :

Pour commencer, et comme beaucoup d’autres framework à la mode, Symfony est basé sur une architecture MVC (Modèle – Vue – Controlleur). En gros, ça signifie qu’on décompose une page web en 3 parties :

  • Le modèle, qui s’occupe du traitement des données,
  • La vue, qui insère ces données dans un format d’affichage (du xHTML, du XML…),
  • Et enfin, le controlleur, le « chef d’orchestre » de l’ensemble, qui fait communiquer tout le monde.

Les « pages » sont alors décomposées en différents parties :

  • les applications (exemple de 2 applications pour un site : la partie « publique » et l’inteface d’administration),
  • les modules : dans chaque application, ils correspondent aux parties du site (exemple, pour un blog, un module « article »),
  • les actions : pour un même module, il existe souvent plusieurs actions (pour revenir à notre blog, « ajouter un commentaire », « noter un commentaire »). Ces différentes actions peuvent modifier la page actuelle (notamment avec de l’AJAX, pour pas tout recharger).


Des conventions de partout…

Les concepteurs de Symfony s’appuient sur le principe « DRY » : Don’t Repeat Yourself. Inutile de répéter 15 fois à notre application que les fichiers de vue se trouvent dans le dossier untel par exemple.

Pour cela, de nombreuses conventions de nommages sont présentes ainsi que de nombreuses conventions afin de ranger ses fichiers au bon endroit…Appelez un champ d’une table « created_at », et hop, automatiquement, il se remplira avec l’heure de sauvegarde dans la base de chaque enregistrement. Et si, par hasard, on voulait passer outre certaines conventions, cela n’est pas un problème ! Tout se reconfigure très facilement.

Les fichiers de configurations sont « en cascades ». On peut définir un ensembles de configurations pour l’ensemble de l’application, puis, pour certains modules, modifier certaines parties de la configuration…

Ne pas réinventer la roue…

Autre philosophie appréciable dans ce framework : It does not reinvent the wheel:. Ce principe de ne pas réinventer la roue à chaque fois, ils l’appliquent directement à leur framework, en s’inspirant de différentes solutions déjà exisantes pour :

  • la base de données objet : propel
  • pour les tests unitaires : lime

La base de données objets semble un concept assez flou au départ… Mais on s’y fait vite ! Et ça ouvre de nouvelles possibilités !

Grace à ce framework, le dévoleppement se fait en « mode agile », c’est à dire qu’on peut très facilement ajouter ou modifier des parties de l’application (oui, on ne parle plus vraiment de site internet à ce niveau là :) ). La logique du framework oblige à une certaine organisation de ses fichiers, de ses classes… Tout est plus clair, et donc, plus facilement modifiable.

En conclusion…

Et pour finir cette présentation… une objection :

« Whether you are a PHP 5 expert or a newcomer to web application programming, you will be able to use symfony. The main factor in deciding whether or not to do so is the size of your project. »

Faut pas rêver… si tu n’a pas déjà de solides connaissances en PHP, inutile de regarder Symfony… Faut commencer tranquillement… A mettre son petit code PHP au milieu de ses pages HTML… Sinon, jamais tu ne comprendra l’intérêt d’un framework comme Symfony !

Et un point négatif enfin… La documentation en ligne… Plutot mauvaise… Rien à voir avec l’excellente doc PHP, qui mélange à merveille functions et exemples d’utilisation…

Pour conclure, la nouvelle version du PJEA sera probablement basé la dessus ! Mais c’est pas pour demain… J’ai à peine commencé les premiers schémas, les premiers « cahiers des charges »…

Pour approfondir :

Le site officiel : http://www.symfony-project.org/

Et notamment quelques tutorials sympas sur cette page : http://www.symfony-project.org/doc/1_1/

Là, j’ai attaqué un genre de gros tutorial, qui permet de réaliser ce site : askeet.

Bonne découverte :)

, ,