Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Symfony, c’est quoi ?

Par Anthony DOMINGUEZ Publié le 27/10/2016 à 10:29:50 Noter cet article:
(0 votes)
Avis favorable du comité de lecture

Introduction

Symfony est un framework PHP développé par la société française SensioLabs. Nous allons décomposer chaque partie de la phrase précédente.

PHP: Hypertext Preprocessor

PHP est un langage de programmation libre côté serveur, il permet de rendre les pages d'un site web dynamique via un serveur HTTP mais peut également être utilisé en local. C'est un langage orienté objet et est à l'origine de site web célèbre comme Facebook ou encore WikiPédia.

En image voici le principe de fonctionnement :

Framework

Premièrement, un framework est à un développeur ce qu'une boîte à outils est à un bricoleur. Les frameworks permettent de réduire les temps de développement des applications en répondant de façon efficace aux problèmes rencontrés le plus souvent par les développeurs. (CRUD, arborescence, normes, sécurités, etc.)

Dit grossièrement, plutôt que de réinventer la roue à chaque fois, les frameworks le font pour vous.

Deuxièmement, il n'y a pas de définition simple à « Framework ». La difficulté majeure vient du fait qu'il y a deux dimensions principales qui se complète mais sont toutes les deux indépendante, on peut donc dire qu'un framework est à la fois une boîte à outils et une méthodologie.

Sous plusieurs aspects, un framework peut être indiqué comme étant une boîte à outils, en ce sens qu'il propose, dans le cas de Symfony, un certain nombre de fonctionnalités pour faciliter le travail, l'accélérer et même automatiser des parties, des tâches que les développeurs rencontrent lors du développement d'une application web. C'est le côté « work » du framework.

Couper un arbre, à la main, c'est douloureux et très long, avec une pierre, c'est moins douloureux, pas très précis et pas beaucoup plus rapide. Avec une hache, l'outil est optimisé même si il ne dispense pas de taper sur l'arbre. En plus la hache a été testée industriellement.

Dans le développement web, on ne coupe pas d'arbre bien sûr mais il y a des tâches répétitives et régulièrement sujettes à erreur du fait qu'elles sont répétitives. Construction de bases de données, exécution de tests, gestion des urls, cache, imports … Pour ces tâches, le framework offre la hache et les gants, voir même la tronçoneuse. Ces fonctionnalités, testés et mis à l'épreuve du feu par de nombreux développeurs sont le résultat d'énormément de retours d'expérience, leurs stabilités sont assuré par ce processus.

Maintenant disons qu'un framework est à la programmation ce que grammaire et orthographe sont à la pensée. Le framework permet donc d'énoncer des conventions d'écriture et d'organisation destinées à rendre plus efficace en clarifiant et homogénéisant. Le framework va s'inspirer des bonnes pratiques déjà existantes, il structure et favorise la discipine du code produit.

Pour résumer, un framework est un cadre structurel. C'est le côté « frame » du framework, il oblige a procéder de certaines manières pour mieux libérer le processus intellectuel. Il permet au développeur de ne plus s'occuper des tâches répétitive et les présente clairement pour faire face à l'augmentation de la complexité.

Un autre moyen d'accélérer le processus de création d'application web c'est d'ajouter un ORM a son framework, cela tombe bien, Symfony intègre Doctrine !

L'ORM Doctrine

Doctrine est l'ORM (Object-Relational Mapping) intégré par défaut dans Symfony. Un ORM est un logiciel qui permet de donner l'illusion de travailler avec une base de données objet alors que l'on est sur une base de données relationnelle.

Grâce à cela le développeur ne fait plus de requête SQL (sauf cas spécifiques rares) et travailles avec ses objets, sauvegarde ses objets à coups de « save » sans se soucier des requêtes que l'ORM met en route à sa place. Il n'y plus besoin de modifier toutes vos requêtes SQL une après l'autre parce que vous avez ajouté un malheureux booléen dans un de vos objets et que votre table a donc été mise à jours, tout ce que vous avez à faire est de vous concentrer sur votre application, générer vos classes et l'ORM se chargera de créer la base, les tables, les relations et des gérer les données.

Et si vous êtes sur un projet dont la base de données est déjà existante, pas de panique, Doctrine est capable d'analyser la base de données, les tables, les relations entre les tables et en un instant tout vos objets sont crééent et prêt à être utilisé !

Ainsi grâce à l'ORM intégré dans le framework on fait encore gagner du temps au développeur, du temps qu'il peut investir dans les algorithmes ou le templating, un moteur de template est aussi fourni avec Symfony et il s'agit de Twig !

Le moteur de template Twig

Twig est un moteur de template utilisé pour des pages HTML recevant du PHP. L'auteur de ce célèbre outils est ni plus ni moins que Fabien Potencier, le créateur de Symfony et co-fondateur de SensioLabs.

L'outils permet de réaliser des templates plus propres, il n'y a plus aucune balise PHP dans les pages HTML ce qui facilite la lecture du code.

On peut également faire hériter un template sur un autre pour y modifier le « bloc » qui nous intéresse, on a plus besoin de réécrire toutes la page, un simple héritage suffit !

Historique des versions

La première version de Symfony sort le 18 octobre 2005. Elle est développé par SensioLabs à l'époque une simple agence web qui à force de recréer les mêmes fonctionnalités de gestion d'utilisateurs, gestion ORM, etc. va décider de développer un framework pour ses propres besoins. Les problèmatiques auxquels répond le framework sont souvent les mêmes pour d'autres développeurs, le code est donc par la suite partagé avec la communauté des développeurs de PHP.

Le projet prend alors le nom de Symfony suite à la volonté de Fabien Potencier (le créateur du framework) de conserver les initiales S et F de Sensio Framework.

Dans cette première version, le framework compatible à partir de la version de PHP 5.2.4 embarque les fonctionnalités suivante :

- Une séparation en trois couches selon le modèle MVC ce qui permet une meilleure maintenabilité et évolutivité.

- Des performances optimisées et un système de cache afin d'assurer des temps de réponse optimaux.

- Une gestion des URL parlante, permettant à une page d'avoir une URL distincte de sa position dans l'arborescence.

- Un système de configuration en cascade utilisant le langage YAML.

- Un générateur de back-office et un lanceur de module.

- L'internationalisation native.

- Une couche de mapping objet-relationnel (ORM) et une abstraction de données.

- Le support d'AJAX.

- Une architecture extensible permettant la créations et l'utilisations de plugins.

Symfony 2 :

La version 2 de Symfony casse la compatibilité avec la branche 1.x. et est disponible à partir de PHP 5.3.3. Sortie le 28 juillet 2011, quand on regarde ce qui a changé, la réponse est principalement « TOUT ». En effet, la deuxième mouture du framework vient par défaut avec une boîte à outils impressionnante pour permettre aux développeurs d'être immédiatement opérationnel. Le support pour des librairies telles qu'Assetic, Twig, Imagine et Monolog est une illustration de la volonté de pouvoir réutiliser tout ce qui se fait de mieux en termes de performances et de standards.

Le framework se professionnalise donc dans cette deuxième version avec des injections de dépendance, le concept de « Bundle » commence a arriver, d'ailleurs Symfony2 est un Bundle. Les ESI (Edge Side Include), le cache HTTP ou encore le support d'un reverse proxy comme Varnish font leurs arrivés ainsi qu'une barre de débug plus complète que la précédente.

Symfony 3 :

La troizième version de Symfony arrive le 30 novembre 2015. Elle est développé pour fonctionné avec une version minimum de PHP en 5.5.9. Si l'arrivé de Symfony 2 avait soufflé un vent de panique dans la communauté avec la difficulté de porter un projet Symfony 1 sur Symfony 2, la troizième version permet une mise à niveau plus sereine. La bonne nouvelle est donc que le code Symfony 2 est compatible avec Symfony 3.

Cette version est la suite logique de l'évolution du framework où les couches de compatibilité et beaucoup de deprecated features ont été retirées.

Finalement, Symfony ...

Symfony est donc un framework PHP ! Il fournit une méthodologie (conventions d'écriture et d'organisation, discipline du code produit, MVC), des outils (CRUD, Génération d'amin, plugins/bundles). Il intègre des outils qui lui apporte des fonctionnalités intéressante et qui ne sont pas de trop comme l'ORM Doctrine et un moteur de template (Twig).

Comme tout framework, il nécessite un temps de formation, d'apprentissage des bonnes pratiques. Mais ce temps en vaut la peine !

Symfony utilise des bundles pour ajouter, retirer, modifier des fonctionnalités sur vos projets. Le kernel lui même de Symfony est un bundle !

Les bundles sont utilisable sur tout vos projets, il existe des bundles pour à peu près tout, vous n'avez pas a réinventer la roue, il existe des bundles qui servent de CMS, des bundles pour faire des blogs, des forums, des systèmes de paiement en ligne, etc.

Les formulaires sont aussi très simple à mettre en place grâce à Symfony, il vous suffit d'indiquer l'objet pour lequel vous souhaitez créer ce formulaire et Symfony est capable de générer les champs en fonction des informations dont il dispose. Par exemple si vous avez un objet bureau et un objet tiroir, vous indiquez à Symfony que l'objet tiroir est forcément lié à un bureau, vous créez ensuite un formulaire pour l'objet bureau et un autre pour l'objet tiroir, Symfony sait que tiroir doit être lié à bureau, il vous proposera donc une liste de bureau déjà stocké en base lors de l'affichage du formulaire. Vous n'aurez pas eu de requête à écrire ni de gestion de balise HTML etc.

Le framework est de plus en plus utilisé dans les entreprises et les offres d'emploi recherchant des profils maîtrisant Symfony croissent sur les sites d'annonces professionnels, maîtriser Symfony est un plus qui peut vous ouvrir plusieurs portes.

Enfin la communauté utilisant le framwork Symfony est très active, comme beaucoup de projet open source, ce qui permet d'être plutôt bien informé et guidé en cas de problème par des utilisateurs certifiés. SensioLabs met en place des certificats que l'on peut passer dans des centres d'examens comme des certificats Microsoft ou Cisco.

De plus le framework Symfony est un des meilleurs, si ce n'est le meilleur, framework PHP du moment sur le marché, avec plus de 300 000 développeur Symfony recensé à travers le monde, des projet comme Spotify ou BlaBlaCar l'utilisant il peut donc jouir d'une assez bonne presse, ce qui est tout à fait normal.

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels