C’est en octobre 2005 que l’en­tre­prise de logiciels française Sen­sio­Labs a mis au point le framework open source Symfony, qui s’appelait tout d’abord Sensio Framework. La source d’ins­pi­ra­tion pour la création de ce framework vient de Ruby on Rails, sorti une année au­pa­ra­vant. L’objectif de l’équipe de dé­ve­lop­peurs était de créer une pla­te­forme de dé­ve­lop­pe­ment pour les projets en PHP. Depuis, le framework Symfony a été con­ti­nuel­le­ment développé par Sen­sio­Labs. Ainsi, une cons­truc­tion modulaire a par exemple été ajoutée en 2011.

Symfony, c’est quoi ?

Symfony est une col­lec­tion d’environ 30 bi­blio­thèques PHP, qui peuvent être aussi bien té­lé­char­gées in­dé­pen­dam­ment qu’en paquet. En dehors des com­po­sants de base, des modules sup­plé­men­taires sont dis­po­nibles et sont utilisés pour étendre le framework ou pour être utilisés in­dé­pen­dam­ment. Selon Sen­sio­Labs, plus de 500 millions de té­lé­char­ge­ments de paquets uniques ou du framework dans sa totalité ont été effectués sur les dix dernières années. De nombreux projets Web ont recours à des éléments de Symfony, à l’image du Content Ma­na­ge­ment System Drupal, l’outil d’analyse Web Piwik ou le logiciel de forums vBulletin. Tous les paquets du framework sont réu­ti­li­sables et dis­po­nibles sur la page d’accueil et en té­lé­char­ge­ment.

Symfony : in­tro­duc­tion aux com­po­sants du framework Web

Si le framework Symfony est utilisé aussi fré­quem­ment en tant que base de dé­ve­lop­pe­ment pour de nombreux projets Web, c’est notamment parce que sa cons­truc­tion est modulable. Chaque module a sa propre fonction, et cela confère beaucoup de flexi­bi­lité au framework. Ainsi il est par exemple possible d’utiliser Symfony en tant que framework full-stack (pile lo­gi­cielle complète) si votre projet Web requiert une large palette de fonc­tion­na­li­tés. De plus, vous disposez de la pos­si­bi­lité de créer votre propre set de fonc­tion­na­li­tés avec la bi­blio­thèque Symfony ou de composer votre propre version du framework, plus allégée. Ainsi, les com­po­sants utilisés sont par­fai­te­ment adaptés à votre projet Web, que ce soit pour une en­tre­prise ou un site Web re­la­ti­ve­ment simple. Vous disposez de plus de la pos­si­bi­lité d’ajouter ou de supprimer librement des modules, tant que cela ne modifie pas les con­di­tions d’uti­li­sa­tion du framework.

Il est possible de sé­lec­tion­ner, entre autres, les com­po­sants suivants :

  • Asset : c’est le module pour générer des URL et effectuer dif­fé­rentes versions de fichiers image, feuilles de style CSS et ap­pli­ca­tions Ja­vaS­cript.
  • Class­Loa­der : Class­Loa­der veille à ce que les classes PHP soient té­lé­char­gées au­to­ma­ti­que­ment.
  • Debug : met des outils à dis­po­si­tion pour contrer les bugs dans le code PHP, pour détecter les erreurs et les analyser.
  • De­pen­den­cyIn­jec­tion : permet de définir des standards pour la création d’objets pour le projet Web en question.
  • Event­Dis­pat­cher : ce sont des com­po­sants élé­men­taires per­met­tant la com­mu­ni­ca­tion entre les modules, sous forme d’évé­ne­ments.
  • Form : comprend des outils avec lesquels la création de for­mu­laires HTML réu­ti­li­sables est sim­pli­fiée.
  • Tem­pla­ting : outils visant à créer un système de templates.
  • Trans­la­tion : module pour l’in­ter­na­tio­na­li­sa­tion d’un projet.  
  • Validator : confère la pos­si­bi­lité de valider les classes créées.
  • Yaml : té­lé­charge et stocke les fichiers .yml.
Conseil

Saviez-vous que Symfony et Laravel font partie des fra­me­works PHP les plus po­pu­laires ? Nous vous montrons ce qui les rend si bons.

Le concept : un contrôle de vue de modèle pour struc­tu­rer l’ap­pli­ca­tion Web

Symfony permet la mise en place d’un principe basé sur le contrôle de vue de modèle (Model View Con­trol­ler, ou MVC). Ce motif ar­chi­tec­tu­ral distingue les ap­pli­ca­tions en trois branches :

  • Données et fonc­tion­na­lité prin­ci­pale (Model),
  • Mise en page visuelle des données créées (View)
  • Le travail des données uti­li­sa­teur saisies (Con­trol­ler).

Le concept MVC veille à ce que le code du programme soit clair et bien structuré, tout en faisant bé­né­fi­cier d’une grande flexi­bi­lité dans l’uti­li­sa­tion des dif­fé­rents com­po­sants. Grâce à ce concept, les com­po­sants peuvent être réu­ti­li­sés et ne sont pas liés à des données saisies par­ti­cu­lières. Néanmoins, il est important de savoir que Symfony ne comporte pas de com­po­sants modèles intégrés. Si vous créez un nouveau projet avec Symfony, il manquera de manière con­sé­quente le dossier habituel. À l’aide de bi­blio­thèques ORM sup­plé­men­taires (Object Re­la­tio­nal Mapper) comme celles qui sont re­com­man­dées par Sen­sio­Labs, parmi les­quelles on retrouve Doctrine ou Propel qui per­met­tent un stockage dans les systèmes de bases de données sans encombres et in­dé­pen­dam­ment. Pour créer l’espace d’affichage (View) de votre ap­pli­ca­tion Web, utilisez le module pour créer les templates né­ces­saires à l’aide d’objets PHP, qu’il est possible d’étendre à l’aide d’options spé­ci­fiques. L’espace de contrôle porte de manière standard le nom index.php (dans le dossier « web »). Les noms d’uti­li­sa­teur dans Symfony sont nommés « actions », comme dans la majorité des fra­me­works.

Symfony : PHP en tant que facteur de succès auprès des uti­li­sa­teurs

Symfony est une col­lec­tion de dif­fé­rentes bi­blio­thèques PHP. C’est pourquoi le langage de script doit être installé pour pouvoir utiliser le framework. La version actuelle com­pa­tible avec la série Symfony 2.8 requiert au moins 5.3.9. Symfony 3.1 et 3.2 re­quiè­rent PHP 5.5.9 ou une version plus récente. Dès le départ, l’équipe de dé­ve­lop­peurs de Sen­sio­Labs avaient pour objectif de créer une col­lec­tion de com­po­sants pour les projets PHP qui pour­raient être con­cur­rents avec les fra­me­works si­mi­laires dis­po­nibles dans d’autres langues. C’est avant tout Ruby on Rails qui a inspiré les dé­ve­lop­peurs français de Symfony, en ce qui concerne la structure et les com­po­sants. Le dé­ve­lop­pe­ment et le succès du framework Symfony sont étroi­te­ment liés à l’histoire du langage de script. Comme celui-ci est dis­po­nible librement et rencontre un succès gran­dis­sant, le langage a été optimisé par les dé­ve­lop­peurs ces dernières années. La forte aug­men­ta­tion de la per­for­mance liée à PHP 7 laisse deviner une tendance positive pour l’ef­fi­ca­cité des futures ap­pli­ca­tions de Symfony.

Com­pa­ti­bi­lité des­cen­dante et support technique pour une meilleure con­ti­nuité

Depuis 2013, une nouvelle version de Symfony apparaît de manière bian­nuelle. Les uti­li­sa­teurs en­re­gis­trés sur Sen­sio­Labs­Con­nect, la pla­te­forme de Community Service pour les uti­li­sa­teurs actifs de Symfony permet de recevoir des in­for­ma­tions par email en continu. Si cela peut sembler laborieux d’effectuer une mise à jour du framework tous les six mois pour bé­né­fi­cier de la dernière version, il n’en est rien. Sen­sio­Labs met à dis­po­si­tion toutes les solutions né­ces­saires pour veiller à la con­ti­nuité du framework.

  • Com­pa­ti­bi­lité des­cen­dante : toutes les mises à jour de Symfony sont à com­pa­ti­bi­lité des­cen­dante depuis la Version 2.3. Cela signifie que la fonc­tion­na­lité des ap­pli­ca­tions dé­ve­lop­pées est maintenue dans les versions su­pé­rieures. Quelques ex­cep­tions per­sis­tent néanmoins en matière de com­pa­ti­bi­lité. La com­pa­ti­bi­lité pour Symfony 3.0 (4.0, etc.) n’est pas garantie non plus.
  • Support technique sur le long terme : gé­né­ra­le­ment, les versions de Symfony bé­né­fi­cient d’un support technique de huit mois. Avec la Version 2.3, Sen­sio­Labs a lancé la première édition de Symfony avec un support technique sur le long terme. Ces versions sont prévues tous les deux ans et ga­ran­tis­sent 36 mois de mises à jour pour les erreurs de pro­gram­ma­tion et 48 mois de patchs de sécurité. En plus de la version 2.7, la version 2.8 bénéficie également d’un support technique sur le long terme.
  • Processus de migration continu pour la Version 3.0 : la migration vers la dernière Version Symfony 3.0 est assurée par l’équipe de dé­ve­lop­pe­ment sur le concept du Con­ti­nuous Upgrade Path (soit la « voie de migration continue »). En tant que dé­ve­lop­peur d’une ap­pli­ca­tion Symfony, il est possible d’avoir des in­di­ca­tions dé­tail­lées sur les lignes de code à re­tra­vail­ler peu à peu et commencer ensuite la mise à jour du framework de l’ap­pli­ca­tion Web.

Le framework Symfony : avantages et in­con­vé­nients

La recherche du framework PHP adapté était au­pa­ra­vant com­pa­rable au fait de chercher une aiguille dans une botte de foin. La demande en set de bi­blio­thèques per­for­mantes pour un langage Web de pré­di­lec­tion a mené à l’élar­gis­se­ment de l’offre, avec de nombreux types de projets dif­fé­rents. Grâce à des progrès répétés et sur le long terme, certains fra­me­works (dont Symfony) ont réussi à con­vaincre les dé­ve­lop­peurs PHP. Le framework marque des points avant tout en ce qui concerne la structure et les in­ter­con­nexions entre les dif­fé­rents modules, grâce auxquels dif­fé­rents types d’ap­pli­ca­tions Web peuvent être réalisées. C’est pourquoi Symfony est, entre autres, toujours autant apprécié par la com­mu­nauté. Avec le support technique sur le long terme et l’en­ga­ge­ment pris pour veiller à ce que la com­pa­ti­bi­lité soit maximale, l’équipe de dé­ve­lop­pe­ment de Sen­sio­Labs offre la base adéquate pour assurer la con­ti­nuité des projets Symfony.

La migration vers une nouvelle version du framework et les réa­jus­te­ments dans le code de l’ap­pli­ca­tion Symfony dé­ve­lop­pée reste néanmoins re­la­ti­ve­ment fas­ti­dieuse. La com­plexité du framework PHP reste un de ses grands problèmes en matière d’ac­ces­si­bi­lité. Même en disposant d’une do­cu­men­ta­tion générale et d’ex­pli­ca­tions sur chaque module, il reste tout de même difficile pour les débutants de trouver ses marques en débutant avec ce framework. De plus, le framework Symfony présente parfois des failles en matière de per­for­mance, même en com­pa­rai­son avec d’autres fra­me­works en PHP. L’ap­pli­ca­tion de la bi­blio­thèque ORM requiert beaucoup de res­sources et joue également un rôle important.

À qui les éléments de système PHP s’adressent-t-ils ?

Tous les modules Symfony se dé­mar­quent par le fait qu’ils puissent fonc­tion­ner aussi bien de manière in­di­vi­duelle que de manière col­lec­tive. Ainsi, plutôt que d’utiliser sys­té­ma­ti­que­ment l’ensemble du framework, il est possible d’utiliser son propre micro-framework qui ne comprend que les com­po­sants de votre choix. Cela permet d’éviter de tra­vail­ler avec une structure de bi­blio­thèque saturée et com­pre­nant des éléments superflus. Mais vous pouvez également éche­lon­ner Symfony dans la mesure où l’ajout de modules est permis et cette option est très utile pour les projets de grande ampleur. Ainsi, il y a de nom­breuses ap­pli­ca­tions qui se basent sur Symfony, par exemple le service de musique en streaming Spotify ou encore le site Web du magazine de mode Vogue.

Le framework Symfony constitue un choix idéal si vous tra­vail­lez avec PHP et que vous désirez bé­né­fi­cier d’une grande flexi­bi­lité. Pour utiliser les bi­blio­thèques in­di­vi­duelles cor­rec­te­ment, des con­nais­sances de base en langage de script sont tout de même requises. Prévoyez donc assez de temps pour maitriser le framework et ses sub­ti­li­tés et pouvoir bé­né­fi­cier par la suite des avantages du dé­ve­lop­pe­ment avec Symfony.

Aller au menu principal