symfony 2 : performances et optimisations

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

Upload: les-tilleulscoop

Post on 25-Dec-2014

2.340 views

Category:

Software


2 download

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.

TRANSCRIPT

Page 1: Symfony 2 : Performances et Optimisations

Symfony2: Sérialisation

SfPot 12/06 Samuel ROZE

Page 2: Symfony 2 : Performances et Optimisations

SerializerAbstraction du format de sortie et d’entrée

Composant Serializer

Sérialisation et désérialisation

Fonctionnalités limitées

Page 3: Symfony 2 : Performances et Optimisations

JMS SerializerJMSSerializerBundle

(Dé)sérialisation

JSON

XML

YAML

Page 4: Symfony 2 : Performances et Optimisations

JMS Serializer Les groupes de sérialisation

Comment retourner des

attributs différents en fonction du context ?

Page 5: Symfony 2 : Performances et Optimisations

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 2 : Performances et Optimisations

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 2 : Performances et Optimisations

JMS Serializer Le versioning

Faire co-habiter différentes

versions d’une même entité ?

Page 8: Symfony 2 : Performances et Optimisations

JMS Serializer Le versioning

Configuration “simple” Configuration avec le “accessType”

Page 9: Symfony 2 : Performances et Optimisations

JMS Serializer Le versioning

NB: Utilise “version_compare”

Sérialisation avec context de version

Page 10: Symfony 2 : Performances et Optimisations

JMS Serializer Custom handlers

Comment sérialiser “à la main” un type

“privé” ?

Page 11: Symfony 2 : Performances et Optimisations

JMS Serializer Custom handlers

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

(local, ftp, cdn, …)

Page 12: Symfony 2 : Performances et Optimisations

JMS Serializer Custom handlers

Ajout de l’handler via services de Symfony

Page 13: Symfony 2 : Performances et Optimisations

JMS Serializer Custom handlers

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

Page 14: Symfony 2 : Performances et Optimisations

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 2 : Performances et Optimisations

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 2 : Performances et Optimisations

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 2 : Performances et Optimisations

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 2 : Performances et Optimisations

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 2 : Performances et Optimisations

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 2 : Performances et Optimisations

Merci à tous !