deSymfony 2012 - Concierto de Eventos

3,499 views

Published on

Charla sobre Eventos de deSymfony 2012 de @egulias y @javiacei. Puedes ver el video en http://youtu.be/03tpUS0OaeY. Desde los eventos de Symfony 2 (kernel.*) hasta lanzar nuestro propio evento.
Para ver el código final de la charla: https://github.com/egulias/desymfony2012-concierto-de-eventos

Published in: Technology
1 Comment
2 Likes
Statistics
Notes
No Downloads
Views
Total views
3,499
On SlideShare
0
From Embeds
0
Number of Embeds
2,180
Actions
Shares
0
Downloads
57
Comments
1
Likes
2
Embeds 0
No embeds

No notes for slide

deSymfony 2012 - 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

×