SlideShare une entreprise Scribd logo
1  sur  59
Télécharger pour lire hors ligne
desymfony 2012 - Concierto de eventos   1
desymfony 2012 - Concierto de eventos   2
3
1. Escenario principal
2. El patrón observador
3. El Event Dispatcher
4. Los Eventos en Symfony 2




           desymfony 2012 - Concierto de eventos   4
1. Escenario principal
2. El patrón observador
3. El Event Dispatcher
4. Los Eventos en Symfony 2




          desymfony 2012 - Concierto de eventos   5
desymfony 2012 - Concierto de eventos   6
 Creamos librería para gestionar los usuarios
   Esto nos permitirá reutilizar la gestión de usuarios para
    todos nuestros proyectos




                   desymfony 2012 - Concierto de eventos        7
desymfony 2012 - Concierto de eventos   8
desymfony 2012 - Concierto de eventos   9
¿Qué queremos ahora?




desymfony 2012 - Concierto de eventos   10
¿Qué queremos ahora?



A la hora de guardar el usuario, si este tiene perfil en
Github, localizar y guardar información adicional del
usuario.




                  desymfony 2012 - Concierto de eventos    11
desymfony 2012 - Concierto de eventos   12
Si guardamos el usuario desde otro lugar tenemos que
                 duplicar el código.




               desymfony 2012 - Concierto de eventos   13
Introducir el código de github dentro de la librería




               desymfony 2012 - Concierto de eventos   14
Introducir el código de github dentro de la librería




               desymfony 2012 - Concierto de eventos   15
Introducir el código de github dentro de la librería




               desymfony 2012 - Concierto de eventos   16
Introducir el código de github dentro de la librería




               desymfony 2012 - Concierto de eventos   17
Permitir modificar el usuario antes de guardarse




             desymfony 2012 - Concierto de eventos   18
Permitir modificar el usuario antes de guardarse

         pero …, ¿cómo hacemos eso?




             desymfony 2012 - Concierto de eventos   19
Permitir modificar el usuario antes de guardarse

         pero …, ¿cómo hacemos eso?



Patrón observador

             desymfony 2012 - Concierto de eventos   20
1. Escenario principal
2. El patrón observador
3. El Event Dispatcher
4. Los Eventos en Symfony 2




           desymfony 2012 - Concierto de eventos   21
desymfony 2012 - Concierto de eventos   22
Gestor Usuarios
                   (sujeto)




 Rastreador
   Github                                                 github
(observador)




                  desymfony 2012 - Concierto de eventos            23
Gestor Usuarios
                   (sujeto)




 Rastreador
   Github                                                 github
(observador)




                  desymfony 2012 - Concierto de eventos            24
Gestor Usuarios
                   (sujeto)




 Rastreador
   Github                                                 github
(observador)




                  desymfony 2012 - Concierto de eventos            25
Gestor Usuarios
                       (sujeto)



               usuario




 Rastreador
   Github                                                        github
(observador)




                         desymfony 2012 - Concierto de eventos            26
Gestor Usuarios
                       (sujeto)



               usuario




 Rastreador
   Github                                                        github
(observador)




                         desymfony 2012 - Concierto de eventos            27
1. Escenario principal
2. El patrón observador
3. El Event Dispatcher
4. Los Eventos en Symfony 2




           desymfony 2012 - Concierto de eventos   28
Implementa el patrón observador de
     manera simple y efectiva.




          desymfony 2012 - Concierto de eventos   29
 Event
   Evento que será lanzado por el sujeto a través del event dispatcher,
     para informar de un cambio de estado en su interior.

 Listener
   Elemento que será notificado cuando el evento sea lanzado.


 Event Subscriber
   Mismo elemento que el listener, pero define internamente los
     eventos que se encontrará escuchando en todo momento.

 Dispatcher
   Objeto central del sistema de eventos que mantiene un registro de
     todos los listeners, y que eventos tienen asociados cada uno de ellos.
                       desymfony 2012 - Concierto de eventos                  30
Event
             Gestor Usuarios
                                                              Dispatcher




Rastreador
  Github                                                         github
(Listener)


                      desymfony 2012 - Concierto de eventos                31
Event
             Gestor Usuarios
                                                              Dispatcher




Rastreador
  Github                                                         github
(Listener)


                      desymfony 2012 - Concierto de eventos                32
antes_crear_usuario      Event
             Gestor Usuarios
                                                                 Dispatcher
                                           Event       usuario




Rastreador
  Github                                                            github
(Listener)


                      desymfony 2012 - Concierto de eventos                   33
antes_crear_usuario      Event
             Gestor Usuarios
                                                                 Dispatcher
                                           Event       usuario




Rastreador
  Github                                                            github
(Listener)


                      desymfony 2012 - Concierto de eventos                   34
antes_crear_usuario      Event
             Gestor Usuarios
                                                                 Dispatcher
                                           Event       usuario




Rastreador
  Github                                                            github
(Listener)


                      desymfony 2012 - Concierto de eventos                   35
1. Escenario principal
2. El patrón observador
3. El Event Dispatcher
4. Los Eventos en Symfony 2



           desymfony 2012 - Concierto de eventos   36
Event Dispatcher

  HttpKernel
HttpKernelEvent
          • getRequestType()

          • getKernel()

          • getRequest()




kernel.request   ...   kernel.exception
kernel.request

kernel.controller

  kernel.view

kernel.response

kernel.exception
1    kernel.request

    kernel.controller

      kernel.view

    kernel.response

    kernel.exception
 Lo usa el FrameworkBundle mediante el
 RouterListener para crear el atributo
 _controller y definir el controlador que será
 llamado.

 Podemos parar la propagación devolviendo
 un objeto Response
1    kernel.request

2   kernel.controller

      kernel.view

    kernel.response

    kernel.exception
 Nos permite modificar el controlador
 establecido en kernel.request
1    kernel.request

2   kernel.controller

3     kernel.view

    kernel.response

    kernel.exception
 Sólo es llamado si el controlador no
 devuelve un objeto Response

 Nos permite crear un sub sistema de vistas
1    kernel.request

2   kernel.controller

3     kernel.view

4   kernel.response

    kernel.exception
 Nos permite modificar el objeto Response
 devuelto por el controlador

 El FrameworkBundle implementa varios
 listeners
     ProfilerListener
     WebDebugToolbarListener
     ResponseListener
     EsiListener
1    kernel.request

2   kernel.controller

3     kernel.view

4   kernel.response

5   kernel.exception
 Sólo es llamado si hay una excepción
 Son clases normales definidos como
 servicios

 Para los eventos del kernel, los registramos
 en la configuración del inyector.

 Nos permiten realizar acciones durante los
 eventos
               desymfony 2012 - Concierto de eventos   50
51
•   Prioridad de los listeners

•   Frenar la propagación




                                 52
•   Master & Sub Request

•   Listeners.xml

•   app/console container:debug



                                  53
1. Listeners
2. Miiii Eveeeentooooo




           desymfony 2012 - Concierto de eventos   54
Eduardo Gulias
• Desarrollador web desde 2006

• Coqueteando con Symfony (y otros
  frameworks) desde 2007

• Entusiasta de PHP y Symfony

• Miembro del grupo Symfony Madrid
                                                          egulias
• Actualmente trabajando como lider de del
  equipo Symfony de ideup!
                                                          egulias

                  desymfony 2012 - Concierto de eventos             56
Francisco Javier Aceituno
                  • Ingeniero en Informática UPM 2010

                  • Loco por el mundo web y nuevas
                    tecnología s

                  • Apasionado del universo PHP y Symfony

                  • Desarrollador de Software Libre

                  • Miembro del grupo Symfony Madrid
javiacei
                  • Actualmente trabajando como Ingeniero
javiacei            del Software en Unidad Editorial

           desymfony 2012 - Concierto de eventos            57
Código de la presentación
         https://github.com/javiacei/desymfony2012-concierto-de-eventos


                        El Event Dispatcher
 http://symfony.com/doc/current/components/event_dispatcher/introduction.html
               http://symfony.com/doc/current/book/internals.html


               Trabajar usando el CompilerPass
 http://symfony.com/doc/master/cookbook/service_container/compiler_passes.html
http://symfony.com/doc/master/components/dependency_injection/compilation.html


              Trabajando con servicios tageados
   http://symfony.com/doc/master/components/dependency_injection/tags.html

                       desymfony 2012 - Concierto de eventos                     58
desymfony 2012 - Concierto de eventos   59

Contenu connexe

Similaire à Symfony Eventos: Patrón Observador y Event Dispatcher

Introducción a Git
Introducción a GitIntroducción a Git
Introducción a GitManuel Ceron
 
Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1Yaismel Miranda
 
[ES] Sistemas de control de versiones
[ES] Sistemas de control de versiones[ES] Sistemas de control de versiones
[ES] Sistemas de control de versionesEudris Cabrera
 
Control de versiones utilizando Git
Control de versiones utilizando GitControl de versiones utilizando Git
Control de versiones utilizando GitHugo Gilmar Erazo
 
Presentacion Taller de Introducción a Linux SFD2010
Presentacion Taller de Introducción a Linux SFD2010Presentacion Taller de Introducción a Linux SFD2010
Presentacion Taller de Introducción a Linux SFD2010Manuel Martín
 
Introducción a git
Introducción a gitIntroducción a git
Introducción a gitKeopx
 
WorkShop: Introducción a GIT
WorkShop: Introducción a GITWorkShop: Introducción a GIT
WorkShop: Introducción a GITKeopx
 
Clase1(software libre)
Clase1(software libre)Clase1(software libre)
Clase1(software libre)juanhuapaya
 
Desymfony 2011 - Tutorial #1: Instalacion y primeros pasos
Desymfony 2011 - Tutorial #1: Instalacion y primeros pasosDesymfony 2011 - Tutorial #1: Instalacion y primeros pasos
Desymfony 2011 - Tutorial #1: Instalacion y primeros pasosJavier Eguiluz
 
Cómo colaborar en GNOME
Cómo colaborar en GNOMECómo colaborar en GNOME
Cómo colaborar en GNOMEJuanjo Marin
 
UlabGridv2 Propuesta
UlabGridv2 PropuestaUlabGridv2 Propuesta
UlabGridv2 PropuestaOscar Ardaiz
 
Introducción a GIT
Introducción a GITIntroducción a GIT
Introducción a GITmaxfontana90
 
Git y drupal
Git y drupalGit y drupal
Git y drupalJuampy NR
 

Similaire à Symfony Eventos: Patrón Observador y Event Dispatcher (20)

Git / Guía Básica
Git / Guía BásicaGit / Guía Básica
Git / Guía Básica
 
Introducción a Git
Introducción a GitIntroducción a Git
Introducción a Git
 
Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1
 
[ES] Sistemas de control de versiones
[ES] Sistemas de control de versiones[ES] Sistemas de control de versiones
[ES] Sistemas de control de versiones
 
Tallerintroducciongit
TallerintroducciongitTallerintroducciongit
Tallerintroducciongit
 
Control de versiones utilizando Git
Control de versiones utilizando GitControl de versiones utilizando Git
Control de versiones utilizando Git
 
Presentacion Taller de Introducción a Linux SFD2010
Presentacion Taller de Introducción a Linux SFD2010Presentacion Taller de Introducción a Linux SFD2010
Presentacion Taller de Introducción a Linux SFD2010
 
Introducción a git
Introducción a gitIntroducción a git
Introducción a git
 
WorkShop: Introducción a GIT
WorkShop: Introducción a GITWorkShop: Introducción a GIT
WorkShop: Introducción a GIT
 
Tema 1 Control de Versiones
Tema 1 Control de VersionesTema 1 Control de Versiones
Tema 1 Control de Versiones
 
Clase1(software libre)
Clase1(software libre)Clase1(software libre)
Clase1(software libre)
 
Desymfony 2011 - Tutorial #1: Instalacion y primeros pasos
Desymfony 2011 - Tutorial #1: Instalacion y primeros pasosDesymfony 2011 - Tutorial #1: Instalacion y primeros pasos
Desymfony 2011 - Tutorial #1: Instalacion y primeros pasos
 
Git y github básico
Git y github básicoGit y github básico
Git y github básico
 
Cómo colaborar en GNOME
Cómo colaborar en GNOMECómo colaborar en GNOME
Cómo colaborar en GNOME
 
Aprendiendo GIT
Aprendiendo GITAprendiendo GIT
Aprendiendo GIT
 
UlabGridv2 Propuesta
UlabGridv2 PropuestaUlabGridv2 Propuesta
UlabGridv2 Propuesta
 
Git 101+
Git 101+Git 101+
Git 101+
 
Dependency Managers iOS
Dependency Managers iOSDependency Managers iOS
Dependency Managers iOS
 
Introducción a GIT
Introducción a GITIntroducción a GIT
Introducción a GIT
 
Git y drupal
Git y drupalGit y drupal
Git y drupal
 

Dernier

trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 

Dernier (16)

trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 

Symfony Eventos: Patrón Observador y Event Dispatcher

  • 1. desymfony 2012 - Concierto de eventos 1
  • 2. desymfony 2012 - Concierto de eventos 2
  • 3. 3
  • 4. 1. Escenario principal 2. El patrón observador 3. El Event Dispatcher 4. Los Eventos en Symfony 2 desymfony 2012 - Concierto de eventos 4
  • 5. 1. Escenario principal 2. El patrón observador 3. El Event Dispatcher 4. Los Eventos en Symfony 2 desymfony 2012 - Concierto de eventos 5
  • 6. desymfony 2012 - Concierto de eventos 6
  • 7.  Creamos librería para gestionar los usuarios  Esto nos permitirá reutilizar la gestión de usuarios para todos nuestros proyectos desymfony 2012 - Concierto de eventos 7
  • 8. desymfony 2012 - Concierto de eventos 8
  • 9. desymfony 2012 - Concierto de eventos 9
  • 10. ¿Qué queremos ahora? desymfony 2012 - Concierto de eventos 10
  • 11. ¿Qué queremos ahora? A la hora de guardar el usuario, si este tiene perfil en Github, localizar y guardar información adicional del usuario. desymfony 2012 - Concierto de eventos 11
  • 12. desymfony 2012 - Concierto de eventos 12
  • 13. Si guardamos el usuario desde otro lugar tenemos que duplicar el código. desymfony 2012 - Concierto de eventos 13
  • 14. Introducir el código de github dentro de la librería desymfony 2012 - Concierto de eventos 14
  • 15. Introducir el código de github dentro de la librería desymfony 2012 - Concierto de eventos 15
  • 16. Introducir el código de github dentro de la librería desymfony 2012 - Concierto de eventos 16
  • 17. Introducir el código de github dentro de la librería desymfony 2012 - Concierto de eventos 17
  • 18. Permitir modificar el usuario antes de guardarse desymfony 2012 - Concierto de eventos 18
  • 19. Permitir modificar el usuario antes de guardarse pero …, ¿cómo hacemos eso? desymfony 2012 - Concierto de eventos 19
  • 20. Permitir modificar el usuario antes de guardarse pero …, ¿cómo hacemos eso? Patrón observador desymfony 2012 - Concierto de eventos 20
  • 21. 1. Escenario principal 2. El patrón observador 3. El Event Dispatcher 4. Los Eventos en Symfony 2 desymfony 2012 - Concierto de eventos 21
  • 22. desymfony 2012 - Concierto de eventos 22
  • 23. Gestor Usuarios (sujeto) Rastreador Github github (observador) desymfony 2012 - Concierto de eventos 23
  • 24. Gestor Usuarios (sujeto) Rastreador Github github (observador) desymfony 2012 - Concierto de eventos 24
  • 25. Gestor Usuarios (sujeto) Rastreador Github github (observador) desymfony 2012 - Concierto de eventos 25
  • 26. Gestor Usuarios (sujeto) usuario Rastreador Github github (observador) desymfony 2012 - Concierto de eventos 26
  • 27. Gestor Usuarios (sujeto) usuario Rastreador Github github (observador) desymfony 2012 - Concierto de eventos 27
  • 28. 1. Escenario principal 2. El patrón observador 3. El Event Dispatcher 4. Los Eventos en Symfony 2 desymfony 2012 - Concierto de eventos 28
  • 29. Implementa el patrón observador de manera simple y efectiva. desymfony 2012 - Concierto de eventos 29
  • 30.  Event  Evento que será lanzado por el sujeto a través del event dispatcher, para informar de un cambio de estado en su interior.  Listener  Elemento que será notificado cuando el evento sea lanzado.  Event Subscriber  Mismo elemento que el listener, pero define internamente los eventos que se encontrará escuchando en todo momento.  Dispatcher  Objeto central del sistema de eventos que mantiene un registro de todos los listeners, y que eventos tienen asociados cada uno de ellos. desymfony 2012 - Concierto de eventos 30
  • 31. Event Gestor Usuarios Dispatcher Rastreador Github github (Listener) desymfony 2012 - Concierto de eventos 31
  • 32. Event Gestor Usuarios Dispatcher Rastreador Github github (Listener) desymfony 2012 - Concierto de eventos 32
  • 33. antes_crear_usuario Event Gestor Usuarios Dispatcher Event usuario Rastreador Github github (Listener) desymfony 2012 - Concierto de eventos 33
  • 34. antes_crear_usuario Event Gestor Usuarios Dispatcher Event usuario Rastreador Github github (Listener) desymfony 2012 - Concierto de eventos 34
  • 35. antes_crear_usuario Event Gestor Usuarios Dispatcher Event usuario Rastreador Github github (Listener) desymfony 2012 - Concierto de eventos 35
  • 36. 1. Escenario principal 2. El patrón observador 3. El Event Dispatcher 4. Los Eventos en Symfony 2 desymfony 2012 - Concierto de eventos 36
  • 37. Event Dispatcher HttpKernel
  • 38. HttpKernelEvent • getRequestType() • getKernel() • getRequest() kernel.request ... kernel.exception
  • 40. 1 kernel.request kernel.controller kernel.view kernel.response kernel.exception
  • 41.  Lo usa el FrameworkBundle mediante el RouterListener para crear el atributo _controller y definir el controlador que será llamado.  Podemos parar la propagación devolviendo un objeto Response
  • 42. 1 kernel.request 2 kernel.controller kernel.view kernel.response kernel.exception
  • 43.  Nos permite modificar el controlador establecido en kernel.request
  • 44. 1 kernel.request 2 kernel.controller 3 kernel.view kernel.response kernel.exception
  • 45.  Sólo es llamado si el controlador no devuelve un objeto Response  Nos permite crear un sub sistema de vistas
  • 46. 1 kernel.request 2 kernel.controller 3 kernel.view 4 kernel.response kernel.exception
  • 47.  Nos permite modificar el objeto Response devuelto por el controlador  El FrameworkBundle implementa varios listeners  ProfilerListener  WebDebugToolbarListener  ResponseListener  EsiListener
  • 48. 1 kernel.request 2 kernel.controller 3 kernel.view 4 kernel.response 5 kernel.exception
  • 49.  Sólo es llamado si hay una excepción
  • 50.  Son clases normales definidos como servicios  Para los eventos del kernel, los registramos en la configuración del inyector.  Nos permiten realizar acciones durante los eventos desymfony 2012 - Concierto de eventos 50
  • 51. 51
  • 52. Prioridad de los listeners • Frenar la propagación 52
  • 53. Master & Sub Request • Listeners.xml • app/console container:debug 53
  • 54. 1. Listeners 2. Miiii Eveeeentooooo desymfony 2012 - Concierto de eventos 54
  • 55.
  • 56. Eduardo Gulias • Desarrollador web desde 2006 • Coqueteando con Symfony (y otros frameworks) desde 2007 • Entusiasta de PHP y Symfony • Miembro del grupo Symfony Madrid egulias • Actualmente trabajando como lider de del equipo Symfony de ideup! egulias desymfony 2012 - Concierto de eventos 56
  • 57. Francisco Javier Aceituno • Ingeniero en Informática UPM 2010 • Loco por el mundo web y nuevas tecnología s • Apasionado del universo PHP y Symfony • Desarrollador de Software Libre • Miembro del grupo Symfony Madrid javiacei • Actualmente trabajando como Ingeniero javiacei del Software en Unidad Editorial desymfony 2012 - Concierto de eventos 57
  • 58. Código de la presentación https://github.com/javiacei/desymfony2012-concierto-de-eventos El Event Dispatcher http://symfony.com/doc/current/components/event_dispatcher/introduction.html http://symfony.com/doc/current/book/internals.html Trabajar usando el CompilerPass http://symfony.com/doc/master/cookbook/service_container/compiler_passes.html http://symfony.com/doc/master/components/dependency_injection/compilation.html Trabajando con servicios tageados http://symfony.com/doc/master/components/dependency_injection/tags.html desymfony 2012 - Concierto de eventos 58
  • 59. desymfony 2012 - Concierto de eventos 59