desymfony 2012 - Concierto de eventos   1
desymfony 2012 - Concierto de eventos   2
3
1. Escenario principal2. El patrón observador3. El Event Dispatcher4. Los Eventos en Symfony 2           desymfony 2012 - ...
1. Escenario principal2. El patrón observador3. El Event Dispatcher4. Los Eventos en Symfony 2          desymfony 2012 - C...
desymfony 2012 - Concierto de eventos   6
 Creamos librería para gestionar los usuarios   Esto nos permitirá reutilizar la gestión de usuarios para    todos nuest...
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 enGithub, localizar y guardar información adicio...
desymfony 2012 - Concierto de eventos   12
Si guardamos el usuario desde otro lugar tenemos que                 duplicar el código.               desymfony 2012 - Co...
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...
Permitir modificar el usuario antes de guardarse         pero …, ¿cómo hacemos eso?Patrón observador             desymfony...
1. Escenario principal2. El patrón observador3. El Event Dispatcher4. Los Eventos en Symfony 2           desymfony 2012 - ...
desymfony 2012 - Concierto de eventos   22
Gestor Usuarios                   (sujeto) Rastreador   Github                                                 github(obse...
Gestor Usuarios                   (sujeto) Rastreador   Github                                                 github(obse...
Gestor Usuarios                   (sujeto) Rastreador   Github                                                 github(obse...
Gestor Usuarios                       (sujeto)               usuario Rastreador   Github                                  ...
Gestor Usuarios                       (sujeto)               usuario Rastreador   Github                                  ...
1. Escenario principal2. El patrón observador3. El Event Dispatcher4. Los Eventos en Symfony 2           desymfony 2012 - ...
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 e...
Event             Gestor Usuarios                                                              DispatcherRastreador  Githu...
Event             Gestor Usuarios                                                              DispatcherRastreador  Githu...
antes_crear_usuario      Event             Gestor Usuarios                                                                ...
antes_crear_usuario      Event             Gestor Usuarios                                                                ...
antes_crear_usuario      Event             Gestor Usuarios                                                                ...
1. Escenario principal2. El patrón observador3. El Event Dispatcher4. Los Eventos en Symfony 2           desymfony 2012 - ...
Event Dispatcher  HttpKernel
HttpKernelEvent          • getRequestType()          • getKernel()          • getRequest()kernel.request   ...   kernel.ex...
kernel.requestkernel.controller  kernel.viewkernel.responsekernel.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...
1    kernel.request2   kernel.controller      kernel.view    kernel.response    kernel.exception
 Nos permite modificar el controlador establecido en kernel.request
1    kernel.request2   kernel.controller3     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.request2   kernel.controller3     kernel.view4   kernel.response    kernel.exception
 Nos permite modificar el objeto Response devuelto por el controlador El FrameworkBundle implementa varios listeners   ...
1    kernel.request2   kernel.controller3     kernel.view4   kernel.response5   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 inyec...
51
•   Prioridad de los listeners•   Frenar la propagación                                 52
•   Master & Sub Request•   Listeners.xml•   app/console container:debug                                  53
1. Listeners2. 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 ...
Francisco Javier Aceituno                  • Ingeniero en Informática UPM 2010                  • Loco por el mundo web y ...
Código de la presentación         https://github.com/javiacei/desymfony2012-concierto-de-eventos                        El...
desymfony 2012 - Concierto de eventos   59
deSymfony2012 - Concierto de eventos
Upcoming SlideShare
Loading in …5
×

deSymfony2012 - Concierto de eventos

552 views

Published on

Transparencias de la charla "Concierto de eventos" en deSymfony 2012 ejecutada por @egulias y @javiacei.

Patrón observador y Event Dispatcher de Symfony2

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
552
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

deSymfony2012 - Concierto de eventos

  1. 1. desymfony 2012 - Concierto de eventos 1
  2. 2. desymfony 2012 - Concierto de eventos 2
  3. 3. 3
  4. 4. 1. Escenario principal2. El patrón observador3. El Event Dispatcher4. Los Eventos en Symfony 2 desymfony 2012 - Concierto de eventos 4
  5. 5. 1. Escenario principal2. El patrón observador3. El Event Dispatcher4. Los Eventos en Symfony 2 desymfony 2012 - Concierto de eventos 5
  6. 6. desymfony 2012 - Concierto de eventos 6
  7. 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. 8. desymfony 2012 - Concierto de eventos 8
  9. 9. desymfony 2012 - Concierto de eventos 9
  10. 10. ¿Qué queremos ahora?desymfony 2012 - Concierto de eventos 10
  11. 11. ¿Qué queremos ahora?A la hora de guardar el usuario, si este tiene perfil enGithub, localizar y guardar información adicional delusuario. desymfony 2012 - Concierto de eventos 11
  12. 12. desymfony 2012 - Concierto de eventos 12
  13. 13. Si guardamos el usuario desde otro lugar tenemos que duplicar el código. desymfony 2012 - Concierto de eventos 13
  14. 14. Introducir el código de github dentro de la librería desymfony 2012 - Concierto de eventos 14
  15. 15. Introducir el código de github dentro de la librería desymfony 2012 - Concierto de eventos 15
  16. 16. Introducir el código de github dentro de la librería desymfony 2012 - Concierto de eventos 16
  17. 17. Introducir el código de github dentro de la librería desymfony 2012 - Concierto de eventos 17
  18. 18. Permitir modificar el usuario antes de guardarse desymfony 2012 - Concierto de eventos 18
  19. 19. Permitir modificar el usuario antes de guardarse pero …, ¿cómo hacemos eso? desymfony 2012 - Concierto de eventos 19
  20. 20. Permitir modificar el usuario antes de guardarse pero …, ¿cómo hacemos eso?Patrón observador desymfony 2012 - Concierto de eventos 20
  21. 21. 1. Escenario principal2. El patrón observador3. El Event Dispatcher4. Los Eventos en Symfony 2 desymfony 2012 - Concierto de eventos 21
  22. 22. desymfony 2012 - Concierto de eventos 22
  23. 23. Gestor Usuarios (sujeto) Rastreador Github github(observador) desymfony 2012 - Concierto de eventos 23
  24. 24. Gestor Usuarios (sujeto) Rastreador Github github(observador) desymfony 2012 - Concierto de eventos 24
  25. 25. Gestor Usuarios (sujeto) Rastreador Github github(observador) desymfony 2012 - Concierto de eventos 25
  26. 26. Gestor Usuarios (sujeto) usuario Rastreador Github github(observador) desymfony 2012 - Concierto de eventos 26
  27. 27. Gestor Usuarios (sujeto) usuario Rastreador Github github(observador) desymfony 2012 - Concierto de eventos 27
  28. 28. 1. Escenario principal2. El patrón observador3. El Event Dispatcher4. Los Eventos en Symfony 2 desymfony 2012 - Concierto de eventos 28
  29. 29. Implementa el patrón observador de manera simple y efectiva. desymfony 2012 - Concierto de eventos 29
  30. 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. 31. Event Gestor Usuarios DispatcherRastreador Github github(Listener) desymfony 2012 - Concierto de eventos 31
  32. 32. Event Gestor Usuarios DispatcherRastreador Github github(Listener) desymfony 2012 - Concierto de eventos 32
  33. 33. antes_crear_usuario Event Gestor Usuarios Dispatcher Event usuarioRastreador Github github(Listener) desymfony 2012 - Concierto de eventos 33
  34. 34. antes_crear_usuario Event Gestor Usuarios Dispatcher Event usuarioRastreador Github github(Listener) desymfony 2012 - Concierto de eventos 34
  35. 35. antes_crear_usuario Event Gestor Usuarios Dispatcher Event usuarioRastreador Github github(Listener) desymfony 2012 - Concierto de eventos 35
  36. 36. 1. Escenario principal2. El patrón observador3. El Event Dispatcher4. Los Eventos en Symfony 2 desymfony 2012 - Concierto de eventos 36
  37. 37. Event Dispatcher HttpKernel
  38. 38. HttpKernelEvent • getRequestType() • getKernel() • getRequest()kernel.request ... kernel.exception
  39. 39. kernel.requestkernel.controller kernel.viewkernel.responsekernel.exception
  40. 40. 1 kernel.request kernel.controller kernel.view kernel.response kernel.exception
  41. 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. 42. 1 kernel.request2 kernel.controller kernel.view kernel.response kernel.exception
  43. 43.  Nos permite modificar el controlador establecido en kernel.request
  44. 44. 1 kernel.request2 kernel.controller3 kernel.view kernel.response kernel.exception
  45. 45.  Sólo es llamado si el controlador no devuelve un objeto Response Nos permite crear un sub sistema de vistas
  46. 46. 1 kernel.request2 kernel.controller3 kernel.view4 kernel.response kernel.exception
  47. 47.  Nos permite modificar el objeto Response devuelto por el controlador El FrameworkBundle implementa varios listeners  ProfilerListener  WebDebugToolbarListener  ResponseListener  EsiListener
  48. 48. 1 kernel.request2 kernel.controller3 kernel.view4 kernel.response5 kernel.exception
  49. 49.  Sólo es llamado si hay una excepción
  50. 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. 51
  52. 52. • Prioridad de los listeners• Frenar la propagación 52
  53. 53. • Master & Sub Request• Listeners.xml• app/console container:debug 53
  54. 54. 1. Listeners2. Miiii Eveeeentooooo desymfony 2012 - Concierto de eventos 54
  55. 55. 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
  56. 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 Madridjaviacei • Actualmente trabajando como Ingenierojaviacei del Software en Unidad Editorial desymfony 2012 - Concierto de eventos 57
  57. 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.htmlhttp://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
  58. 58. desymfony 2012 - Concierto de eventos 59

×