Introduction à Symfony2

Dans ce premier article parlant de Symfony2, je vais introduire ce fameux Framwork en parlant de ses avantages et ses points forts…
Lancé en octobre 2005, Symfony a été développé par Sensio, agence web française, sous le même nom. La dernière version stable de ce Framework (date de publication de cet article) est 2.3.1
Sensio propose une documentation officielle très claire et complète.

Flexibilité :
Je vais me baser sur trois composants majeurs de Symfony2 pour mettre en œuvre sa flexibilité:

L’inversion de contrôle ou dans sa forme spécifique l’injection des dépendances, est un grand avantage pour Symfony2 dans sa définition comme étant un Framework PHP. Sf2 répose sur un conteneur de dépendances léger et simple utilisé dans le cœur du Framework permettant un découplage total des composants. Tout est explicite : la configuration du conteneur comporte tous les dépendances des composants.

Sensio définit un bundle comme étant un plugin, indépendant mais facile à intégrer dans l’application. Toute la puissance de sf2 se cache sous ce système modulaire, même les fonctionnalités du cœur sont assimilées à des bundles dont le chargement est explicite.

Sf2 propose une nouvelle implémentation du pattern observer pour le composant EventDispatcher qui permet d’intervenir à tout moment de l’exécution d’une application pour modifier l’objet requête avant l’exécution de l’action contrôleur ; de cette façon, on peut très facilement créer des Hooks.

Performance:
Symfony2 est très rapide et c’est grâce à des améliorations remarquables dans les versions 2.x comme l’élimination des méthodes magiques ( __get, __set, __call…) gourmands en terme d’analyse de code et des fichiers ce qui a un impact négatif sur les performances.

Autres avantages :

  • Modèle MVC
  • Le composant ClassLoader
  • AppKernel : classe bootstrap permettant de charger les bundles et la configuration de l’application.

Voilà une introduction rapide sur Symfony2. A chaque fois, on va avancer un peu de point de vue technique. Dans le prochain article, je vais parler de l’architecture du Symfony2 ;)