SlideShare une entreprise Scribd logo
1  sur  28
Télécharger pour lire hors ligne
Les événements -
utilisation dans
Symfony
Meetup symfony montpellier
30 janvier 2017 - 1001 Pharmacies
Bonjour et désolé!
Julien Vinber
Développeur Application et Web
pour l'éditeur de logiciel Yooda
Programmation
séquentielle
1
“la programmation séquentielle est un
paradigme de programmation dans laquelle le
déroulement des instructions du programme
est toujours le même (les instructions
elles-mêmes peuvent être différentes en
fonctions des embranchements,...).
Wikipedia
Simple ?
L’homme
Plus on est libre, plus les
choix à faire sont complexes
Sauve-moi - Guillaume Musso
Quelle solution ?
Programmation
événementielle
2
Gestionnaire d’événement
On ne cherche plus à complexifier du code pour gérer les
interactions. Au contraire on le découpe en petite action
simple et autonome.
PHP et les événements ?
3
“
Par exemple lors de la création d’un utilisateur
on peut vouloir :
● Envoyer un mail de confirmation
● Créer un utilisateur dans la gestion Co.
● Envoyer une alerte aux commerciales pour
contacter le client.
● Lui envoyer dans 7 jours une offre promo.
● Valider son mail.
● Vérifier s’il y a un parrain et lui envoyer
une récompense.
● ...
Oui, mais voilà, les applications se complexifient
Résultat, un code qui fait tout et n’importe quoi.
Les événements avec
Symfony.
4
Exemple lors de la création d’un utilisateur :
● On crée l’utilisateur en base
● Déclenchement d’un événement
● Fin.
On crée un écouteur pour l’envoi des mails
● On enregistre l’écouteur
● Je suis appelé
● J’envoie mon mail
● Fin
● ...
Principe
Avantage
● Enlève les
dépendances
● Découpage en
action simple.
● Test simplifier.
● On revient sur
un découpage
métier.
Inconvénient
● Plus de code
dans l’absolu.
● Perte de
linéarité du
code.
● Plus difficile à
débugger
Particularité
N’étant pas géré en
natif. Le code reste
mono thread et
synchrone.
Exemple de code :
5
Créer un événement
5.1
Créer l'objet événement
class UserEvent extends Event
{
const EVENT_USERCREATE = 'user.create';
protected $user;
public function __construct (User $user)
{
$this->user = $user;
}
public function getUser()
{
return $this->user;
}
}
Déclenchement
$user = new User();
$user->setEmail('julien@vinber.fr');
$event = new UserEvent($user);
$this->get('event_dispatcher')->dispatch(UserEvent:: EVENT_US
ERCREATE, $event);
Répondre à un événement.
5.2
Le code qui est appelé.
class EnvoyerMailConfirmation
{
public function onUserCreate (UserEvent $event)
{
$user = $event->getUser();
dump ($user);
}
}
Enregistrement
app.envoyermail.user.create:
class: AppAppBundleEventEnvoyerMailConfirmation
tags:
- { name: kernel.event_listener, event: user.create }
Événement existant
6
Kernel.request
Kernel.controller
Kernel.view
Kernel.response
Kernel.terminate
Kernel.exception
Merci!
Des questions?
julien@vinber.fr

Contenu connexe

En vedette

Have you played this Symfony? Why Symfony is great choice for Web development
Have you played this Symfony? Why Symfony is great choice for Web developmentHave you played this Symfony? Why Symfony is great choice for Web development
Have you played this Symfony? Why Symfony is great choice for Web developmentMike Taylor
 
Unit3
Unit3Unit3
Unit3M CP
 
Operations Research Problem
Operations Research  ProblemOperations Research  Problem
Operations Research ProblemTaslima Mujawar
 
mkombe munga cv use
mkombe munga cv usemkombe munga cv use
mkombe munga cv usemkombe munga
 
CHALLENGES_BEFORE_FUTURE_MANAGER
CHALLENGES_BEFORE_FUTURE_MANAGERCHALLENGES_BEFORE_FUTURE_MANAGER
CHALLENGES_BEFORE_FUTURE_MANAGERJAIDEEP CHATTERJEE
 
Vikash kumar java developer -1.5 years of exp
Vikash kumar   java developer -1.5 years of expVikash kumar   java developer -1.5 years of exp
Vikash kumar java developer -1.5 years of expvikash kumar
 

En vedette (12)

Have you played this Symfony? Why Symfony is great choice for Web development
Have you played this Symfony? Why Symfony is great choice for Web developmentHave you played this Symfony? Why Symfony is great choice for Web development
Have you played this Symfony? Why Symfony is great choice for Web development
 
Unit3
Unit3Unit3
Unit3
 
Operations Research Problem
Operations Research  ProblemOperations Research  Problem
Operations Research Problem
 
Google
GoogleGoogle
Google
 
Psalm 23
Psalm 23Psalm 23
Psalm 23
 
Elmar Theune: Climate-Smart Dairy Webinar
Elmar Theune: Climate-Smart Dairy WebinarElmar Theune: Climate-Smart Dairy Webinar
Elmar Theune: Climate-Smart Dairy Webinar
 
mkombe munga cv use
mkombe munga cv usemkombe munga cv use
mkombe munga cv use
 
Ecowas111109202409-phpapp02
Ecowas111109202409-phpapp02Ecowas111109202409-phpapp02
Ecowas111109202409-phpapp02
 
CHALLENGES_BEFORE_FUTURE_MANAGER
CHALLENGES_BEFORE_FUTURE_MANAGERCHALLENGES_BEFORE_FUTURE_MANAGER
CHALLENGES_BEFORE_FUTURE_MANAGER
 
1314105012-Paper
1314105012-Paper1314105012-Paper
1314105012-Paper
 
22_Redballoon
22_Redballoon22_Redballoon
22_Redballoon
 
Vikash kumar java developer -1.5 years of exp
Vikash kumar   java developer -1.5 years of expVikash kumar   java developer -1.5 years of exp
Vikash kumar java developer -1.5 years of exp
 

Similaire à Meetup symfony 30 janvier 2017 - événement

Faire du mailing efficace, c'est pas si simple
Faire du mailing efficace, c'est pas si simpleFaire du mailing efficace, c'est pas si simple
Faire du mailing efficace, c'est pas si simpleThomas P
 
Toolbox du designer : Useberry
Toolbox du designer : UseberryToolbox du designer : Useberry
Toolbox du designer : UseberryLudivine Dobigny
 
Comment marche la visioconference
Comment marche la visioconferenceComment marche la visioconference
Comment marche la visioconferenceHusseinAlarab1
 
CocoaHeads Rennes #4 : Tests automatisés sur iOS
CocoaHeads Rennes #4 : Tests automatisés sur iOSCocoaHeads Rennes #4 : Tests automatisés sur iOS
CocoaHeads Rennes #4 : Tests automatisés sur iOSCocoaHeadsRNS
 
Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Jean Gabès
 
Integration continue et déploiement automatisé
Integration continue et déploiement automatiséIntegration continue et déploiement automatisé
Integration continue et déploiement automatiséJérémie Campari
 
SfPot Lille 07/2015 - Utiliser Symfony sur des environnements Heroku-like
SfPot Lille 07/2015 - Utiliser Symfony sur des environnements Heroku-likeSfPot Lille 07/2015 - Utiliser Symfony sur des environnements Heroku-like
SfPot Lille 07/2015 - Utiliser Symfony sur des environnements Heroku-likeTristan Maindron
 
Formation Symfony2 par KNP Labs
Formation Symfony2 par KNP LabsFormation Symfony2 par KNP Labs
Formation Symfony2 par KNP LabsKNP Labs
 
D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?
D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?
D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?XP Day CH
 
Build automatique et distribution OTA avec Xcode 4.x et Jenkins
Build automatique et distribution OTA avec Xcode 4.x et JenkinsBuild automatique et distribution OTA avec Xcode 4.x et Jenkins
Build automatique et distribution OTA avec Xcode 4.x et JenkinsCocoaHeads France
 
Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesNoel GUILBERT
 
Agilité, Tests Et Industrialisation
Agilité, Tests Et IndustrialisationAgilité, Tests Et Industrialisation
Agilité, Tests Et IndustrialisationPHPPRO
 
Améliorer votre productivité XAML en entreprise !
Améliorer votre productivité XAML en entreprise !Améliorer votre productivité XAML en entreprise !
Améliorer votre productivité XAML en entreprise !Microsoft
 
Améliorer votre productivité XAML en entreprise !
Améliorer votre productivité XAML en entreprise !Améliorer votre productivité XAML en entreprise !
Améliorer votre productivité XAML en entreprise !Microsoft
 
Event Driven, qu'est-ce donc ?! Un nouveau buzzword ?
Event Driven, qu'est-ce donc ?! Un nouveau buzzword ?Event Driven, qu'est-ce donc ?! Un nouveau buzzword ?
Event Driven, qu'est-ce donc ?! Un nouveau buzzword ?Céline Louvet
 

Similaire à Meetup symfony 30 janvier 2017 - événement (20)

FOF Spécial Webinaire.pdf
FOF Spécial Webinaire.pdfFOF Spécial Webinaire.pdf
FOF Spécial Webinaire.pdf
 
Faire du mailing efficace, c'est pas si simple
Faire du mailing efficace, c'est pas si simpleFaire du mailing efficace, c'est pas si simple
Faire du mailing efficace, c'est pas si simple
 
Toolbox du designer : Useberry
Toolbox du designer : UseberryToolbox du designer : Useberry
Toolbox du designer : Useberry
 
Comment marche la visioconference
Comment marche la visioconferenceComment marche la visioconference
Comment marche la visioconference
 
Agile pour l'echafaud ATT2020.pptx
Agile pour l'echafaud ATT2020.pptxAgile pour l'echafaud ATT2020.pptx
Agile pour l'echafaud ATT2020.pptx
 
CocoaHeads Rennes #4 : Tests automatisés sur iOS
CocoaHeads Rennes #4 : Tests automatisés sur iOSCocoaHeads Rennes #4 : Tests automatisés sur iOS
CocoaHeads Rennes #4 : Tests automatisés sur iOS
 
Valider par des tests - Blend
Valider par des tests - BlendValider par des tests - Blend
Valider par des tests - Blend
 
Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)
 
Visioconference
Visioconference Visioconference
Visioconference
 
Integration continue et déploiement automatisé
Integration continue et déploiement automatiséIntegration continue et déploiement automatisé
Integration continue et déploiement automatisé
 
SfPot Lille 07/2015 - Utiliser Symfony sur des environnements Heroku-like
SfPot Lille 07/2015 - Utiliser Symfony sur des environnements Heroku-likeSfPot Lille 07/2015 - Utiliser Symfony sur des environnements Heroku-like
SfPot Lille 07/2015 - Utiliser Symfony sur des environnements Heroku-like
 
Formation Symfony2 par KNP Labs
Formation Symfony2 par KNP LabsFormation Symfony2 par KNP Labs
Formation Symfony2 par KNP Labs
 
D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?
D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?
D1 - Un développeur est-il un numéro, un coût journalier ou un artiste ?
 
Build automatique et distribution OTA avec Xcode 4.x et Jenkins
Build automatique et distribution OTA avec Xcode 4.x et JenkinsBuild automatique et distribution OTA avec Xcode 4.x et Jenkins
Build automatique et distribution OTA avec Xcode 4.x et Jenkins
 
Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiques
 
Method XP
Method XP Method XP
Method XP
 
Agilité, Tests Et Industrialisation
Agilité, Tests Et IndustrialisationAgilité, Tests Et Industrialisation
Agilité, Tests Et Industrialisation
 
Améliorer votre productivité XAML en entreprise !
Améliorer votre productivité XAML en entreprise !Améliorer votre productivité XAML en entreprise !
Améliorer votre productivité XAML en entreprise !
 
Améliorer votre productivité XAML en entreprise !
Améliorer votre productivité XAML en entreprise !Améliorer votre productivité XAML en entreprise !
Améliorer votre productivité XAML en entreprise !
 
Event Driven, qu'est-ce donc ?! Un nouveau buzzword ?
Event Driven, qu'est-ce donc ?! Un nouveau buzzword ?Event Driven, qu'est-ce donc ?! Un nouveau buzzword ?
Event Driven, qu'est-ce donc ?! Un nouveau buzzword ?
 

Plus de Julien Vinber

Swoole Meetup AFUP¨Montpellier 27/01/2021
Swoole   Meetup  AFUP¨Montpellier 27/01/2021Swoole   Meetup  AFUP¨Montpellier 27/01/2021
Swoole Meetup AFUP¨Montpellier 27/01/2021Julien Vinber
 
Et si on en finissait avec CRUD ?
Et si on en finissait avec CRUD ?Et si on en finissait avec CRUD ?
Et si on en finissait avec CRUD ?Julien Vinber
 
Php 7.4 2020-01-28 - afup
Php 7.4   2020-01-28 - afupPhp 7.4   2020-01-28 - afup
Php 7.4 2020-01-28 - afupJulien Vinber
 
Meet up symfony 16 juin 2017 - Les PSR
Meet up symfony 16 juin 2017 -  Les PSRMeet up symfony 16 juin 2017 -  Les PSR
Meet up symfony 16 juin 2017 - Les PSRJulien Vinber
 
Meet up symfony 11 octobre 2016 - Les formulaire
Meet up symfony 11 octobre 2016 - Les formulaireMeet up symfony 11 octobre 2016 - Les formulaire
Meet up symfony 11 octobre 2016 - Les formulaireJulien Vinber
 

Plus de Julien Vinber (8)

PHP8.2_SF8.2.pdf
PHP8.2_SF8.2.pdfPHP8.2_SF8.2.pdf
PHP8.2_SF8.2.pdf
 
Sulu LE CMS Ultime
Sulu LE CMS UltimeSulu LE CMS Ultime
Sulu LE CMS Ultime
 
Swoole Meetup AFUP¨Montpellier 27/01/2021
Swoole   Meetup  AFUP¨Montpellier 27/01/2021Swoole   Meetup  AFUP¨Montpellier 27/01/2021
Swoole Meetup AFUP¨Montpellier 27/01/2021
 
Et si on en finissait avec CRUD ?
Et si on en finissait avec CRUD ?Et si on en finissait avec CRUD ?
Et si on en finissait avec CRUD ?
 
Php 7.4 2020-01-28 - afup
Php 7.4   2020-01-28 - afupPhp 7.4   2020-01-28 - afup
Php 7.4 2020-01-28 - afup
 
Symfony vs laravel
Symfony vs  laravelSymfony vs  laravel
Symfony vs laravel
 
Meet up symfony 16 juin 2017 - Les PSR
Meet up symfony 16 juin 2017 -  Les PSRMeet up symfony 16 juin 2017 -  Les PSR
Meet up symfony 16 juin 2017 - Les PSR
 
Meet up symfony 11 octobre 2016 - Les formulaire
Meet up symfony 11 octobre 2016 - Les formulaireMeet up symfony 11 octobre 2016 - Les formulaire
Meet up symfony 11 octobre 2016 - Les formulaire
 

Meetup symfony 30 janvier 2017 - événement