La version de Symfony 5.2 a été annoncée lors du Symfony Live 2020 par Fabien Potencier, le fondateur de Symfony. La conférence a d’ailleurs commencé par la description de Symfony 5.2. Parmi les nouveautés, quelques améliorations, au niveau des traductions, des Uuid, du Notifier, de la sécurité et du Mailer,.. Mais surtout une meilleure intégration de PHP 8. On retrouve cette idée dans toutes les dernières évolutions de Symfony. Parmi les nouveautés, voici celles qu’on a retenues :

  • Form
  • Uuid
  • Sémaphore et Lock
  • Mailer
  • Security

 

Form

Pour les formulaires, il est désormais possible de “mapper” des données à l’aide des fonctions de rappel.

Schéma

Ce qui donnerait en code :

extrait de code - 1

 

Uuid

Les UUID (identifiants universellement uniques) sont les UID les plus populaires de l’industrie du logiciel. Les UUID sont des nombres de 128 bits généralement représentés sous la forme de cinq groupes de caractères hexadécimaux: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx (le chiffre M est la version UUID et le chiffre N est la variante UUID).

Le nouveau composant Uuid permet leur génération, leur conversion ou encore leur gestion dans Doctrine.

La document se trouve sur : https://symfony.com/doc/current/components/uid.html.

 

Sémaphore et Lock 

Le composant sémaphore est un nouveau composant de la version 5.2. Une sémaphore est une version plus puissante qu’un lock dans le sens où nous pouvons autoriser jusqu’à N processus à bloquer une ressource. Nous pouvons dire qu’un lock est une sémaphore quand N=1.

Le composant Lock est déjà existant mais il y a eu quelques changements. Pour rappel, le composant Lock permet le verrouillage de l’accès à une ressource par un thread ou un processus. Les locks sont désormais partagés : Un service qui lock en lecture / écriture (par exemple, celui qui édite la facture), et les autres services lockent en lecture seulement. Ces derniers ne peuvent pas se bloquer entre eux.

Cela permet une écriture unique pour de multiples lectures :

extrait de code 2

 

Mailer

Le composant Mailer a eu quelques mises à jour ,comme sa configuration qui est plus sémantique :

extrait de code

Il existe désormais une nouvelle méthode d’authentification par mail : DKIM email authentification.

DKIM (Domain Keys Identified Mail) est une méthode d’authentification des e-mails conçue pour détecter les adresses d’expéditeurs falsifiées dans les e-mails (usurpation d’e-mails), une technique souvent utilisée dans le phishing et le spam d’e-mails.

Cette méthode s’utilise assez facilement :

extrait de code 3

 

Security 

 Le composant Security avait besoin de changement puisque cela va faire maintenant bientôt 10 ans qu’il existe. Initialement sorti avec Symfony 2.0 RC1, ce composant était inspiré de Java Spring.

Security fait peau neuve dans Symfony 5.2 grâce à Wouter J (en tant que fonctionnalité expérimentale) !

  • Mode anonyme retiré,
  • Les 3 méthodes getCredentials(), checkCredentials() et getUser() sont remplacées par PassportInterface,
  • Le concept de Passport qui représente l’utilisateur qui souhaite s’authentifier,
  • Le concept de Badges permet maintenant d’ajouter des métadonnées au Passport,
  • Le traitement des Badges, est effectué par les Listeners présents dans Symfony,
  • 4 Events principaux permettent de « suivre » le processus d’authentification : CheckPassportEvent, AuthenticatedTokenCreatedEvent, LoginSuccessEvent et LoginFailureEvent,
  • PUBLIC_ACCESS remplace IS_AUTHENTICATED_ANONYMOUSLY.
  • Nouveau LogoutEvent permet d’agir au moment du logout.

 

Conclusion :

En résumé, Symfony continue son paradigme de “Less Code, More automation” qui veut dire moins de code, plus d’automatisation. Cela passe par ses dernières évolutions notamment grâce à la simplification du code du squelette qui lance le Kernel.

Ses évolutions sont prometteuses, nous attendons désormais la sortie de Symfony 5.3 en Mai 2021.