Le blog

Nouveautés dans Symfony 6.1 : Notre coopérateur Mathias vous en dit plus !

Publié le 17 mai 2022

Comme plusieurs de nos collaborateurs, Mathias Arlaud attribue du temps à l'open source. Récemment, il a apporté quelques contributions à Symfony. Vous pouvez les découvrir juste ici !

Nouveau dans Symfony 6.1 : Constructeurs de contexte de sérialiseur

Chaque fois que vous sérialisez et désérialisez des données, le sérialiseur de Symfony vous permet de lui fournir un certain contexte pour configurer le processus de sérialisation/désérialisation.

Ce contexte peut par exemple être utilisé pour sérialiser des dates dans un format spécial, pour ignorer certaines propriétés, pour utiliser un délimiteur CSV spécifique, [...].

Le contexte est un simple tableau associatif qui associe une chaîne de caractères quelconque à une valeur :

Pour éviter les erreurs de frappe, vous pouvez utiliser les constantes exposées par chaque normalisateur/encodeur :

À partir de Symfony 6.1, vous serez en mesure de créer ce contexte de sérialisation en utilisant des constructeurs de contexte.

Ces constructeurs de contexte sont des objets qui abstraient le tableau associatif du contexte et fournissent à la place une interface fluide pour le construire.

Ainsi, en utilisant les context builders, il sera possible de créer un contexte de sérialisation tout en bénéficiant de l'autocomplétion, de la validation et de la documentation :

Les constructeurs de contextes peuvent être initialisés à partir d'un tableau ordinaire ou même d'un autre constructeur de contexte. Et ils peuvent bien entendu être transformés en un tableau associatif, requis par les méthodes du sérialiseur.

Symfony est livré avec un constructeur de contexte par normalisateur/encodeur.

Mais vous pouvez tout aussi bien créer le vôtre en implémentant la ContextBuilderInterface et en utilisant le ContextBuilderTrait !

Nouveau dans Symfony 6.1 : Profilage du sérialiseur

Lors de la sérialisation, le sérialiseur de Symfony doit trouver un normalisateur et un encodeur appropriés.

Pour ce faire, il passe en revue tous les normalisateurs/encodeurs connus et leur demande s'ils sont en mesure de normaliser/encoder.

Le premier normalisateur/encodeur qui répond qu'il est capable de procéder cette normalisation/cet encodage est sélectionné et utilisé.

Ce modèle de conception est super, mais il rend difficile le fait de savoir quel normalisateur ou encodeur est utilisé pendant tout le processus de (dé)sérialisation. C'est pourquoi un nouveau panneau Symfony Profiler a été ajouté !

Le service de sérialisation est donc décoré pour tracer l'activité des appels aux méthodes serialize(), deserialize(), normalize(), denormalize(), encode() et decode().

Chaque normalisateur et encodeur individuel est également décoré, de sorte que le panneau de debug puisse fournir de nombreux détails sur le processus de sérialisation, tels que la durée, le contexte, l'entrée, ...

Rien n'est nécessaire pour bénéficier de cette fonctionnalité, il suffit de mettre à jour votre framework et d'en profiter !

Notre collaborateur Mathias est basé dans nos bureaux de Lyon, n'hésitez pas à nous contacter selon vos besoins ! Notre équipe se fera un plaisir d’y répondre :)

Retrouvez aussi Mathias avec Robin, lors de notre conférence API platform Con en septembre 2022, ils animeront tous les 2 un talk qui promet d’être passionnant !

Le blog

Pour aller plus loin