Symfony 7 : les nouveautés...
La sortie tant attendue de Symfony 7 marque un nouveau tournant pour le célèbre framework PHP. Fruit de deux années de développement acharné par plus de 600 contributeurs et près de 6 000 commits, cette mouture propulse Symfony dans une nouvelle dimension.
Déjà utilisé par 15% des sites web dans le monde, le framework open source renforce son statut de solution robuste et évolutive pour le développement d’applications web. Sa compatibilité avec les écosystèmes Sylius, Laravel ou encore PrestaShop en fait un choix privilégié pour de nombreux projets. Voyons plus en détail les améliorations apportées par cette nouvelle version.
Améliorations et nouvelles fonctionnalités
Le Command Profiler
L'une des fonctionnalités favorites des développeurs Symfony est sans conteste le Symfony Profiler. Cet outil récolte toutes les informations relatives aux requêtes HTTP afin d'inspecter ces données lors du debug d'éventuels dysfonctionnements. Désormais, avec Symfony 7, le profiler va plus loin en permettant également le profiling des commandes console.
Pour ce faire, il suffit d'ajouter l'option --profile
lors de l'exécution de n'importe quelle commande console, qu'elle soit native à Symfony ou personnalisée :
Ainsi, si le mode debug est activé dans l'application, Symfony collecte les informations liées à l'exécution de la commande. Une fois celle-ci terminée ou interrompue par un signal, ces données de profiling sont consultables dans le même Symfony Profiler utilisé pour les requêtes HTTP.
Cette nouveauté offre donc aux développeurs une visibilité accrue sur le fonctionnement des commandes console, au même titre que les contrôleurs ou les services. Le debug et l'optimisation de ces commandes personnalisées s'en trouvent grandement facilités.
L’AssetMapper
Le composant AssetMapper permet désormais d'écrire du JavaScript et du CSS modernes sans la complexité d'un « bundler ». Les navigateurs supportent en effet déjà de nombreuses fonctionnalités JavaScript récentes comme l'instruction import
ou les classes ES6. Et le protocole HTTP/2 rend moins critique la combinaison des assets pour réduire le nombre de connexions HTTP. AssetMapper se présente donc comme une couche légère facilitant le serveur direct des fichiers vers le navigateur.
En outre, ce composant propose deux fonctionnalités principales :
Le mappage et versioning des assets : tous les fichiers présents dans le répertoire
assets/
sont rendus publiquement disponibles et versionnés.Les « importmaps » : fonctionnalité native des navigateurs simplifiant l'utilisation de l'instruction JavaScript
import
.
Cette nouveauté facilite donc grandement le développement moderne de JavaScript et de CSS sans complexifier l'architecture. Les gains en productivité sont certains.
Webhooks
Les webhooks sont des callbacks HTTP définis par l'utilisateur. Ils permettent à des services tiers de signaler des événements externes auxquels l'application peut réagir.
Prenons l'exemple du site packagist.org référençant les paquets PHP. Sans webhooks, ce site devrait interroger en permanence GitHub, GitLab et consorts pour détecter les mises à jour des dépôts de code source.
Au lieu de cela, packagist.org expose des webhooks que Github et autres peuvent appeler pour transmettre les détails d'un paquet lorsqu'une nouvelle version est poussée. Les changements sont ainsi propagés quasi instantanément sans gaspiller de ressources.
Les webhooks étant un mécanisme tellement commun et pratique, Symfony 7 introduit un nouveau composant Webhook et un composant RemoteEvent dédiés. Dans Symfony, on définit un webhook comme étant un parseur + un consommateur.
Cette brique facile à mettre en place et à maintenir fluidifie les interactions avec des services tiers ou des événements externes. Là encore, les gains en productivité sont au rendez-vous !
Les Early Hints
Les « Early Hints » constituent l'une des techniques les plus récentes et efficaces pour améliorer les performances perçues des sites web et des applications. Les Early Hints permettent aux serveurs d'indiquer aux navigateurs quelles ressources (fichiers CSS, JavaScript, polices web, etc.) ils doivent commencer à charger pendant que le serveur prépare encore sa réponse.
Techniquement, les Early Hints sont une réponse HTTP avec un code statut 103 contenant un ou plusieurs en-têtes HTTP listant les ressources à charger ou avec lesquelles établir une connexion.
Ces en-têtes sont également inclus dans la réponse que le serveur enverra plus tard pour répondre à la requête utilisateur. Néanmoins, en les envoyant au plus tôt, les navigateurs peuvent commencer à charger ces ressources ou à se préparer, améliorant grandement les performances perçues.
Cette astuce récente et très efficace pour fluidifier le chargement des pages web est désormais prise en charge nativement par Symfony.
Access Token
Les jetons d'accès, aussi appelés jetons porteurs, sont très utilisés dans le cadre des APIs. Tout détenteur d'un de ces jetons peut s'en servir pour accéder aux ressources associées, d'où la nécessité de les protéger lors du stockage et du transport.
Symfony 6.2 avait introduit un nouvel authentificateur capable de récupérer ces jetons d'accès et d'en extraire l'identifiant utilisateur associé.
Cette brique facilitant la gestion sécurisée des jetons d'accès selon le standard RFC6750 est désormais disponible nativement dans Symfony 7. L'intégration avec les API utilisant ce type d'authentification s'en trouve grandement simplifiée.
Clock
Lors des tests applicatifs, la gestion du temps (propriété physique incontrôlable), impose souvent des solutions peu élégantes, parfois sources d'erreurs temporaires.
Pour répondre à cette problématique, Symfony avait introduit dans sa version 2.8 une solution facilitant ces tests. Près de sept ans plus tard, Symfony 7 réitère en proposant le composant Clock. Celui-ci vient créer une couche d'abstraction entre les fonctions natives de date de PHP et l'application. Dès lors, il est désormais possible de :
Continuer à utiliser les dates normalement via la classe
NativeClock
dans l'application;Avoir recours à
MockClock
, imitant une fausse horloge lors des tests ;Employer
MonotonicClock
basée sur une horloge PHP offrant une plus grande précision dans les analyses de performances.
Ce composant Clock lève donc l'écueil du temps dans les tests et mesures de performances.[content-jobs title=""Vous cherchez une mission dans une scale-up ?"" contracts=""freelance"" limit=""5""keywords=""Scale-up"" /]
Commentaire (1)
Connectez-vous ou créez votre compte pour réagir à l’article.