Top Banner
Symfony2: Sérialisation SfPot 12/06 Samuel ROZE
20

Symfony et serialization avec JMS serializer

Apr 12, 2017

Download

Technology

Samuel Rozé
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Symfony et serialization avec JMS serializer

Symfony2: Sérialisation

SfPot 12/06 Samuel ROZE

Page 2: Symfony et serialization avec JMS serializer

SerializerAbstraction du format de sortie et d’entrée

Composant Serializer

Sérialisation et désérialisation

Fonctionnalités limitées

Page 3: Symfony et serialization avec JMS serializer

JMS SerializerJMSSerializerBundle

(Dé)sérialisation

JSON

XML

YAML

Page 4: Symfony et serialization avec JMS serializer

JMS Serializer Les groupes de sérialisation

Comment retourner des

attributs différents en fonction du context ?

Page 5: Symfony et serialization avec JMS serializer

JMS Serializer Les groupes de sérialisation

Sérialisation d’un User

Intérêt de Media:user ?

Sérialisation d’un Media

Intérêt de User:medias ?

Page 6: Symfony et serialization avec JMS serializer

JMS Serializer Les groupes de sérialisation

1. Configuration des groupes via annotations

2. Sérialisation avec un des groupes définis

3. Sérialisation voulue

Page 7: Symfony et serialization avec JMS serializer

JMS Serializer Le versioning

Faire co-habiter différentes

versions d’une même entité ?

Page 8: Symfony et serialization avec JMS serializer

JMS Serializer Le versioning

Configuration “simple” Configuration avec le “accessType”

Page 9: Symfony et serialization avec JMS serializer

JMS Serializer Le versioning

NB: Utilise “version_compare”

Sérialisation avec context de version

Page 10: Symfony et serialization avec JMS serializer

JMS Serializer Custom handlers

Comment sérialiser “à la main” un type

“privé” ?

Page 11: Symfony et serialization avec JMS serializer

JMS Serializer Custom handlers

FileEntry gère le stockage de nos fichiers, sur différents providers

(local, ftp, cdn, …)

Page 12: Symfony et serialization avec JMS serializer

JMS Serializer Custom handlers

Ajout de l’handler via services de Symfony

Page 13: Symfony et serialization avec JMS serializer

JMS Serializer Custom handlers

Un objet FileEntry devient une chaine de caractères à la sérialisation

Page 14: Symfony et serialization avec JMS serializer

JMS Serializer (De)serialize events

Accès aux données

Avant désérialisationpre_serialize

Après désérialisationpost_serialize

Avant sérialisationpre_deserialize

Après sérialisationpost_deserialize

Page 15: Symfony et serialization avec JMS serializer

JMS Serializer (De)serialize events

Problématique: retourner une thumbnail optimisée pour le

client

Avoir accès à la requête client

Avoir notre thumbnailManager

Pouvoir modifier l’entité avant la sérialization

Page 16: Symfony et serialization avec JMS serializer

JMS Serializer (De)serialize events

Création du subscriber JMS, grâce au tag jms_serializer.event_subscriber

Ajout du subscriber via le builder

Page 17: Symfony et serialization avec JMS serializer

JMS Serializer (De)serialize events

Si le paramètre deviceWidth est dans la requête, on récupère le thumbnail le plus optimisé pour le client,

qui sera sérialisé

Page 18: Symfony et serialization avec JMS serializer

JMS Serializer (De)serialize events

De nombreuses applications possibles :

Transformation de données sensibles

Cartes bleues

Adresses email

Modifications diverses

Génération d’URLs

….

Page 19: Symfony et serialization avec JMS serializer

JMS Serializer Intégration avec FOSRestBundle

Groupes de sérialisation Versioning

Configuration générale fos_rest.serializer.version

Format version listener fos_rest.format_listener.media_type.version_regex

‘/(v|version)=(?P<version>[0-9\.]+)/'

Page 20: Symfony et serialization avec JMS serializer

Merci à tous !