Symfony : le framework PHP polyvalent communautaire

C’est en octobre 2005 que l’entreprise de logiciels française SensioLabs a mis au point le framework open source Symfony, qui s’appelait tout d’abord Sensio Framework. La source d’inspiration pour la création de ce framework vient de Ruby on Rails, sorti une année auparavant. L’objectif de l’équipe de développeurs était de créer une plateforme de développement pour les projets en PHP. Depuis, le framework Symfony a été continuellement développé par SensioLabs. Ainsi, une construction modulaire a par exemple été ajoutée en 2011.

Symfony, c’est quoi ?

Symfony est une collection d’environ 30 bibliothèques PHP, qui peuvent être aussi bien téléchargées indépendamment qu’en paquet. En dehors des composants de base, des modules supplémentaires sont disponibles et sont utilisés pour étendre le framework ou pour être utilisés indépendamment. Selon SensioLabs, plus de 500 millions de téléchargements 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 Management System Drupal, l’outil d’analyse Web Piwik ou le logiciel de forums vBulletin. Tous les paquets du framework sont réutilisables et disponibles sur la page d’accueil et en téléchargement.

Symfony : introduction aux composants du framework Web

Si le framework Symfony est utilisé aussi fréquemment en tant que base de développement pour de nombreux projets Web, c’est notamment parce que sa construction est modulable. Chaque module a sa propre fonction, et cela confère beaucoup de flexibilité au framework. Ainsi il est par exemple possible d’utiliser Symfony en tant que framework full-stack (pile logicielle complète) si votre projet Web requiert une large palette de fonctionnalités. De plus, vous disposez de la possibilité de créer votre propre set de fonctionnalités avec la bibliothèque Symfony ou de composer votre propre version du framework, plus allégée. Ainsi, les composants utilisés sont parfaitement adaptés à votre projet Web, que ce soit pour une entreprise ou un site Web relativement simple. Vous disposez de plus de la possibilité d’ajouter ou de supprimer librement des modules, tant que cela ne modifie pas les conditions d’utilisation du framework.

Il est possible de sélectionner, entre autres, les composants suivants :

  • Asset : c’est le module pour générer des URL et effectuer différentes versions de fichiers image, feuilles de style CSS et applications JavaScript.
  • ClassLoader : ClassLoader veille à ce que les classes PHP soient téléchargées automatiquement.
  • Debug : met des outils à disposition pour contrer les bugs dans le code PHP, pour détecter les erreurs et les analyser.
  • DependencyInjection : permet de définir des standards pour la création d’objets pour le projet Web en question.
  • EventDispatcher : ce sont des composants élémentaires permettant la communication entre les modules, sous forme d’événements.
  • Form : comprend des outils avec lesquels la création de formulaires HTML réutilisables est simplifiée.
  • Templating : outils visant à créer un système de templates.
  • Translation : module pour l’internationalisation d’un projet.  
  • Validator : confère la possibilité 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 frameworks PHP les plus populaires ? Nous vous montrons ce qui les rend si bons.

Le concept : un contrôle de vue de modèle pour structurer l’application Web

Symfony permet la mise en place d’un principe basé sur le contrôle de vue de modèle (Model View Controller, ou MVC). Ce motif architectural distingue les applications en trois branches :

  • Données et fonctionnalité principale (Model),
  • Mise en page visuelle des données créées (View)
  • Le travail des données utilisateur saisies (Controller).

Le concept MVC veille à ce que le code du programme soit clair et bien structuré, tout en faisant bénéficier d’une grande flexibilité dans l’utilisation des différents composants. Grâce à ce concept, les composants peuvent être réutilisés et ne sont pas liés à des données saisies particulières. Néanmoins, il est important de savoir que Symfony ne comporte pas de composants modèles intégrés. Si vous créez un nouveau projet avec Symfony, il manquera de manière conséquente le dossier habituel. À l’aide de bibliothèques ORM supplémentaires (Object Relational Mapper) comme celles qui sont recommandées par SensioLabs, parmi lesquelles on retrouve Doctrine ou Propel qui permettent un stockage dans les systèmes de bases de données sans encombres et indépendamment. Pour créer l’espace d’affichage (View) de votre application Web, utilisez le module pour créer les templates nécessaires à l’aide d’objets PHP, qu’il est possible d’étendre à l’aide d’options spécifiques. L’espace de contrôle porte de manière standard le nom index.php (dans le dossier « web »). Les noms d’utilisateur dans Symfony sont nommés « actions », comme dans la majorité des frameworks.

Symfony : PHP en tant que facteur de succès auprès des utilisateurs

Symfony est une collection de différentes bibliothèques PHP. C’est pourquoi le langage de script doit être installé pour pouvoir utiliser le framework. La version actuelle compatible avec la série Symfony 2.8 requiert au moins 5.3.9. Symfony 3.1 et 3.2 requièrent PHP 5.5.9 ou une version plus récente. Dès le départ, l’équipe de développeurs de SensioLabs avaient pour objectif de créer une collection de composants pour les projets PHP qui pourraient être concurrents avec les frameworks similaires disponibles dans d’autres langues. C’est avant tout Ruby on Rails qui a inspiré les développeurs français de Symfony, en ce qui concerne la structure et les composants.

Le développement et le succès du framework Symfony sont étroitement liés à l’histoire du langage de script. Comme celui-ci est disponible librement et rencontre un succès grandissant, le langage a été optimisé par les développeurs ces dernières années. La forte augmentation de la performance liée à PHP 7 laisse deviner une tendance positive pour l’efficacité des futures applications de Symfony.

Compatibilité descendante et support technique pour une meilleure continuité

Depuis 2013, une nouvelle version de Symfony apparaît de manière biannuelle. Les utilisateurs enregistrés sur SensioLabsConnect, la plateforme de Community Service pour les utilisateurs actifs de Symfony permet de recevoir des informations par email en continu. Si cela peut sembler laborieux d’effectuer une mise à jour du framework tous les six mois pour bénéficier de la dernière version, il n’en est rien. SensioLabs met à disposition toutes les solutions nécessaires pour veiller à la continuité du framework.

  • Compatibilité descendante : toutes les mises à jour de Symfony sont à compatibilité descendante depuis la Version 2.3. Cela signifie que la fonctionnalité des applications développées est maintenue dans les versions supérieures. Quelques exceptions persistent néanmoins en matière de compatibilité. La compatibilité pour Symfony 3.0 (4.0, etc.) n’est pas garantie non plus.
  • Support technique sur le long terme : généralement, les versions de Symfony bénéficient d’un support technique de huit mois. Avec la Version 2.3, SensioLabs 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 garantissent 36 mois de mises à jour pour les erreurs de programmation 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éveloppement sur le concept du Continuous Upgrade Path (soit la « voie de migration continue »). En tant que développeur d’une application Symfony, il est possible d’avoir des indications détaillées sur les lignes de code à retravailler peu à peu et commencer ensuite la mise à jour du framework de l’application Web.

Le framework Symfony : avantages et inconvénients

La recherche du framework PHP adapté était auparavant comparable au fait de chercher une aiguille dans une botte de foin. La demande en set de bibliothèques performantes pour un langage Web de prédilection a mené à l’élargissement de l’offre, avec de nombreux types de projets différents. Grâce à des progrès répétés et sur le long terme, certains frameworks (dont Symfony) ont réussi à convaincre les développeurs PHP. Le framework marque des points avant tout en ce qui concerne la structure et les interconnexions entre les différents modules, grâce auxquels différents types d’applications Web peuvent être réalisées. C’est pourquoi Symfony est, entre autres, toujours autant apprécié par la communauté. Avec le support technique sur le long terme et l’engagement pris pour veiller à ce que la compatibilité soit maximale, l’équipe de développement de SensioLabs offre la base adéquate pour assurer la continuité des projets Symfony.

La migration vers une nouvelle version du framework et les réajustements dans le code de l’application Symfony développée reste néanmoins relativement fastidieuse. La complexité du framework PHP reste un de ses grands problèmes en matière d’accessibilité. Même en disposant d’une documentation générale et d’explications 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 performance, même en comparaison avec d’autres frameworks en PHP. L’application de la bibliothèque ORM requiert beaucoup de ressources 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émarquent par le fait qu’ils puissent fonctionner aussi bien de manière individuelle que de manière collective. Ainsi, plutôt que d’utiliser systématiquement l’ensemble du framework, il est possible d’utiliser son propre micro-framework qui ne comprend que les composants de votre choix. Cela permet d’éviter de travailler avec une structure de bibliothèque saturée et comprenant des éléments superflus. Mais vous pouvez également échelonner 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 nombreuses applications 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 travaillez avec PHP et que vous désirez bénéficier d’une grande flexibilité. Pour utiliser les bibliothèques individuelles correctement, des connaissances de base en langage de script sont tout de même requises. Prévoyez donc assez de temps pour maitriser le framework et ses subtilités et pouvoir bénéficier par la suite des avantages du développement avec Symfony.