View
2.340
Download
2
Category
Preview:
DESCRIPTION
Compte rendu du sfPot à Lille du 12 juin 2014 animé par Samuel Rozé et Thomas Segond. Le thème était Symfony : Optimisations et Performances.
Citation preview
Symfony2: Sérialisation
SfPot 12/06 Samuel ROZE
SerializerAbstraction du format de sortie et d’entrée
Composant Serializer
Sérialisation et désérialisation
Fonctionnalités limitées
JMS SerializerJMSSerializerBundle
(Dé)sérialisation
JSON
XML
YAML
JMS Serializer Les groupes de sérialisation
Comment retourner des
attributs différents en fonction du context ?
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 ?
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
JMS Serializer Le versioning
Faire co-habiter différentes
versions d’une même entité ?
JMS Serializer Le versioning
Configuration “simple” Configuration avec le “accessType”
JMS Serializer Le versioning
NB: Utilise “version_compare”
Sérialisation avec context de version
JMS Serializer Custom handlers
Comment sérialiser “à la main” un type
“privé” ?
JMS Serializer Custom handlers
FileEntry gère le stockage de nos fichiers, sur différents providers
(local, ftp, cdn, …)
JMS Serializer Custom handlers
Ajout de l’handler via services de Symfony
JMS Serializer Custom handlers
Un objet FileEntry devient une chaine de caractères à la sérialisation
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
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
JMS Serializer (De)serialize events
Création du subscriber JMS, grâce au tag jms_serializer.event_subscriber
Ajout du subscriber via le builder
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é
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
….
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\.]+)/'
Merci à tous !
Recommended