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 :)

, ,