Clever Age Asie a participé à l’événement organisé par Fabien Potencier le mois dernier à Ho Chi Minh au Vietnam. Le fondateur et lead développeur de Symfony™ était venu présenter le framework et les nouvelles fonctionnalités de la version 4.
La conférence
Tout d’abord, pour ceux qui ne connaissent toujours pas Symfony™ : il s’agit d’un framework PHP très populaire, utilisé par des centaines de milliers d’applications web ainsi que d’autres projets open source tels que Laravel ou Drupal. Symfony™ est le framework PHP le plus répandu en Europe et il est également assez populaire aux Etats-Unis, mais il reste peu connu en Asie. Cette conférence de Fabien Potencier était l’occasion de faire connaître le framework dans la région.
Bien que Symfony™ 4 soit sorti il y a déjà un an et que la plupart des fonctionnalités soient déjà connues dans la communauté Symfony™, ce n’est toujours pas le cas en Asie où la communauté PHP est beaucoup moins importante que dans le reste du monde.
Pendant la conférence, Fabien a expliqué les fonctionnalités principales de la nouvelle version en présentant à la fois des slides et une démo.
Comparaison avec la version précédente
Symfony™ 4 est une version améliorée et plus légère de Symfony™ 3, qui est livrée par défaut avec moins de librairies optionnelles comme Doctrine. Sensio le présente comme un micro framerwork permettant aux développeurs d’autoriser uniquement ce dont ils ont besoin. L’objectif est d’améliorer la performance de l’application et de mieux s’adapter à toute taille de projet. Symfony™ 4 permet aussi bien de construire une petite API ou une application web de taille importante. Par ailleurs, Sensio a arrêté d’utiliser Silex, leur ancien micro framework.
Comment effectuer la migration
Pour ceux qui ont connu la première version de Symfony™, on se rappelle tous de la difficulté à migrer vers la version 2 dues aux différences majeures existantes entre les deux versions. Depuis la V2, la migration est beaucoup plus facile et Sensio propose une documentation complète pour aider les développeurs à mettre à jour leur projet. Entre la version 3.4 et la version 4, la partie la plus difficile est d’incorporer Flex pour suivre la bonne structure de configuration / répertoire.
Symfony™ Flex et recettes
Fabien nous a parlé de Symfony™ Flex qui offre une nouvelle façon de gérer les applications PHP. Grâce à Flex, l’installation, la mise à jour et la suppression de nombreux bundles populaires parmi la communauté Symfony™ seront automatisés. Symfony™ Flex est disponible à partir de la version 3.3. Même si Flex est optionnel, son utilisation est fortement recommandée par son fondateur.
Le composant Messenger
Le composant messenger est une nouvelle manière d’organiser la structure d’une application et sa logique métier. L’objectif est d’apporter de nombreuses tâches asynchrones et de fonctionnalités à Symfony™, ce qui manquait dans la version précédente. Si vous souhaitez en savoir plus, nous vous suggérons de lire le post de Matthias Noback’s car le patron de conception Command Bus change radicalement les applications PHP modernes et nous recommandons fortement sa mise en place.
Création automatique des services
Avant Symfony™ 3.4, les développeurs devaient configurer manuellement les services pour que l’application sache quoi utiliser pour les injections de dépendance. Grâce à cette création automatique, Symfony™ peut détecter quel service utiliser en fonction de l’identifiant et du typage. Cette configuration automatique est donc un bon moyen d’utiliser Symfony™, sans effort supplémentaire pour les développeurs.
Symfony™ 4 est rapide … très rapide !
En matière de performance, Symfony™ 4 est l’un des meilleurs. En comparant les performances des frameworks PHP actuels, Symfony™ 4.x se distingue comme le framework PHP le plus rapide devant Laravel 5.x, Zend 3.0 et CakePHP 3.x. (à version de PHP égale)
Vous utilisez déjà Symfony™
Comme l’a mentionné Fabien, le meilleur moyen de promouvoir un framework et de montrer qui l’utilise. Aujourd’hui tous les grands frameworks et les grandes applications PHP qu’on peut trouver sur le marché utilisent partiellement Symfony™. Par exemple, les applications PIM et CRM telles que Akeneo utilisent déjà les bibliothèques Symfony™. Dans l’écosystème E-commerce, Magento et Prestashop utilisent aussi partiellement le framework. Idem pour d’autres frameworks PHP tels que CakePHP et Laravel.
Pourquoi choisir un autre framework plus lent qui utilise partiellement Symfony™, alors que vous pouvez commencer à développer directement avec Symfony™ ?
Ce que l’on utilise vraiment
La majeure partie de la conférence était consacrée à une démo de Symfony™ 4 et à la façon dont le framework avait été amélioré pour démarrer encore plus rapidement. Cependant, lorsqu’on travaille sur des applications complexes et des vrais problèmes métiers, certaines des nouvelles fonctionnalités ne sont pas aussi utiles qu’il n’y paraît. Regardons de plus près les fonctionnalités principales.
Flex
Comme dit précédemment, Symfony™ Flex permet de démarrer plus rapidement lorsque vous commencez à construire une application et à configurer automatiquement les bibliothèques externes ainsi que les bundles. Au cours des dernières années nous avons travaillé sur divers projets Symfony™ 2/3/4, et nous n’avons jamais utilisé la configuration standard des bibliothèques. Nous avons toujours eu besoin de les customiser ou de les modifier pour répondre aux besoins du projet. Donc même si Flex et les recettes font le travail pour nous, il est quand même nécessaire d’éditer manuellement les fichiers de configuration.
Lorsqu’on upgrade vers Symfony™ 4, la migration vers Flex n’est pas obligatoire, mais si vous regardez la nouvelle documentation tous les exemples utilisent Flex. Cela signifie qu’à un moment, il nous faudra migrer vers Flex pour pouvoir utiliser la documentation efficacement. Autre cas de figure : si un développeur junior rejoint le projet il pourrait ne pas être capable de travailler sans Flex. Donc même si Flex n’est pas obligatoire, nous serons obligés de migrer afin de ne pas perdre en efficacité.
Derrière les commandes « magiques »
Symfony™ est connu pour avoir un une ligne de commande très efficace (le composant de commande). Et il est vrai qu’il est possible de créer des Controllers, Entities, Services, Listeners etc. très rapidement avec la Console Symfony™. C’est un outil très puissant quand vous commencez à utiliser Symfony™. Mais pour les développeurs expérimentés ces commandes sont peu utilisées : nous préférons créer des fichiers nous-mêmes. Ajouter ces fichiers manuellement nous permet de comprendre comment fonctionne le framework. Encore une fois, cette fonctionnalité est un excellent moyen pour démarrer avec Symfony™ mais n’est pas utile pour les développeurs expérimentés. Dans tous les cas, nous finissons par créer les fichiers manuellement puis nous configurons les diverses classes nous-mêmes afin de garder le contrôle.
L’arborescence du projet
L’organisation des dossiers de Symfony™ a évolué au cours du temps. L’objectif est de proposer un framework facile d’utilisation pour les développeurs et similaire à Unix. En conséquence, Symfony™ 4 propose moins de sous-répertoires et certains répertoires ont été renommés pour répondre aux attentes de la communauté. La notion de « bundle » n’est maintenant plus recommandée pour diviser la logique applicative. Un « bundle » ne doit avoir aucune autre dépendance dans l’application, ce qui n’est pas le cas de la plupart des applications. Cette notion a donc été retirée du framework. Vous verrez ci-dessous la comparaison entre l’ancienne version et la version actuelle de Symfony™.
Conclusion
Cet événement Symfony™ était destiné à présenter le framework à la communauté asiatique et Fabien Potentier a consacré la plupart de la conférence à la présentation des nouvelles fonctionnalités telles que Flex, les recettes, ou les différents outils permettant de créer vos propres API en quelques minutes.
Clever Age est présent en Asie depuis quelques années, mais on sent que la communauté PHP dans la région est encore assez jeune comparée à l’Europe ou aux États-Unis. Toutefois, les changements introduits par Symfony™ 4 et mis en valeur par Fabien lors de la conférence semblent un bon moyen pour amener les entreprises et les développeurs à utiliser le framework sur leurs nouveaux projets. Même si ces nouvelles fonctionnalités ne vont pas changer radicalement la manière dont nous développons, nous sommes convaincus que cela mènera de nombreux développeurs à rejoindre la communauté PHP et Symfony™ dans un futur proche.