deSymfony2012 - Concierto de eventos
-
Upload
javiacei -
Category
Technology
-
view
379 -
download
3
Transcript of deSymfony2012 - Concierto de eventos
![Page 1: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/1.jpg)
1 desymfony 2012 - Concierto de eventos
![Page 2: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/2.jpg)
2 desymfony 2012 - Concierto de eventos
![Page 3: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/3.jpg)
3
![Page 4: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/4.jpg)
1. Escenario principal
2. El patrón observador
3. El Event Dispatcher
4. Los Eventos en Symfony 2
4 desymfony 2012 - Concierto de eventos
![Page 5: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/5.jpg)
1. Escenario principal 2. El patrón observador
3. El Event Dispatcher
4. Los Eventos en Symfony 2
5 desymfony 2012 - Concierto de eventos
![Page 6: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/6.jpg)
6 desymfony 2012 - Concierto de eventos
![Page 7: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/7.jpg)
7 desymfony 2012 - Concierto de eventos
Creamos librería para gestionar los usuarios Esto nos permitirá reutilizar la gestión de usuarios para
todos nuestros proyectos
![Page 8: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/8.jpg)
8 desymfony 2012 - Concierto de eventos
![Page 9: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/9.jpg)
9 desymfony 2012 - Concierto de eventos
![Page 10: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/10.jpg)
¿Qué queremos ahora?
10 desymfony 2012 - Concierto de eventos
![Page 11: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/11.jpg)
¿Qué queremos ahora?
A la hora de guardar el usuario, si este tiene perfil en Github, localizar y guardar información adicional del usuario.
11 desymfony 2012 - Concierto de eventos
![Page 12: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/12.jpg)
12 desymfony 2012 - Concierto de eventos
![Page 13: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/13.jpg)
Si guardamos el usuario desde otro lugar tenemos que duplicar el código.
13 desymfony 2012 - Concierto de eventos
![Page 14: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/14.jpg)
Introducir el código de github dentro de la librería
14 desymfony 2012 - Concierto de eventos
![Page 15: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/15.jpg)
Introducir el código de github dentro de la librería
15 desymfony 2012 - Concierto de eventos
![Page 16: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/16.jpg)
Introducir el código de github dentro de la librería
16 desymfony 2012 - Concierto de eventos
![Page 17: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/17.jpg)
Introducir el código de github dentro de la librería
17 desymfony 2012 - Concierto de eventos
![Page 18: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/18.jpg)
Permitir modificar el usuario antes de guardarse
18 desymfony 2012 - Concierto de eventos
![Page 19: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/19.jpg)
Permitir modificar el usuario antes de guardarse
pero …, ¿cómo hacemos eso?
19 desymfony 2012 - Concierto de eventos
![Page 20: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/20.jpg)
Permitir modificar el usuario antes de guardarse
pero …, ¿cómo hacemos eso?
Patrón observador
20 desymfony 2012 - Concierto de eventos
![Page 21: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/21.jpg)
1. Escenario principal
2. El patrón observador 3. El Event Dispatcher
4. Los Eventos en Symfony 2
21 desymfony 2012 - Concierto de eventos
![Page 22: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/22.jpg)
22 desymfony 2012 - Concierto de eventos
![Page 23: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/23.jpg)
23
Gestor Usuarios (sujeto)
Rastreador Github
(observador)
github
desymfony 2012 - Concierto de eventos
![Page 24: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/24.jpg)
24
Gestor Usuarios (sujeto)
Rastreador Github
(observador)
github
desymfony 2012 - Concierto de eventos
![Page 25: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/25.jpg)
25
Gestor Usuarios (sujeto)
Rastreador Github
(observador)
github
desymfony 2012 - Concierto de eventos
![Page 26: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/26.jpg)
26
Gestor Usuarios (sujeto)
Rastreador Github
(observador)
github
usuario
desymfony 2012 - Concierto de eventos
![Page 27: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/27.jpg)
27
Gestor Usuarios (sujeto)
Rastreador Github
(observador)
github
usuario
desymfony 2012 - Concierto de eventos
![Page 28: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/28.jpg)
1. Escenario principal
2. El patrón observador
3. El Event Dispatcher 4. Los Eventos en Symfony 2
28 desymfony 2012 - Concierto de eventos
![Page 29: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/29.jpg)
Implementa el patrón observador de manera simple y efectiva.
29 desymfony 2012 - Concierto de eventos
![Page 30: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/30.jpg)
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.
30 desymfony 2012 - Concierto de eventos
![Page 31: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/31.jpg)
31
Gestor Usuarios
Rastreador Github
(Listener)
github
Event Dispatcher
desymfony 2012 - Concierto de eventos
![Page 32: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/32.jpg)
32
Gestor Usuarios
Rastreador Github
(Listener)
github
Event Dispatcher
desymfony 2012 - Concierto de eventos
![Page 33: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/33.jpg)
33
Gestor Usuarios
Rastreador Github
(Listener)
github
Event Dispatcher
antes_crear_usuario
Event usuario
desymfony 2012 - Concierto de eventos
![Page 34: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/34.jpg)
34
Gestor Usuarios
Rastreador Github
(Listener)
github
Event Dispatcher
antes_crear_usuario
Event usuario
desymfony 2012 - Concierto de eventos
![Page 35: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/35.jpg)
35
Gestor Usuarios
Rastreador Github
(Listener)
github
Event Dispatcher
antes_crear_usuario
Event usuario
desymfony 2012 - Concierto de eventos
![Page 36: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/36.jpg)
1. Escenario principal
2. El patrón observador
3. El Event Dispatcher
4. Los Eventos en Symfony 2
36 desymfony 2012 - Concierto de eventos
![Page 37: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/37.jpg)
Event Dispatcher
HttpKernel
![Page 38: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/38.jpg)
kernel.exception kernel.request ...
HttpKernelEvent
• getRequestType()
• getKernel()
• getRequest()
![Page 39: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/39.jpg)
kernel.controller
kernel.request
kernel.view
kernel.response
kernel.exception
![Page 40: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/40.jpg)
kernel.controller
kernel.request
kernel.view
kernel.response
kernel.exception
1
![Page 41: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/41.jpg)
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
![Page 42: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/42.jpg)
kernel.controller
kernel.request
kernel.view
kernel.response
kernel.exception
1
2
![Page 43: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/43.jpg)
Nos permite modificar el controlador establecido en kernel.request
![Page 44: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/44.jpg)
kernel.controller
kernel.request
kernel.view
kernel.response
kernel.exception
3
2
1
![Page 45: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/45.jpg)
Sólo es llamado si el controlador no devuelve un objeto Response
Nos permite crear un sub sistema de vistas
![Page 46: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/46.jpg)
kernel.controller
kernel.request
kernel.view
kernel.response
kernel.exception
3
2
1
4
![Page 47: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/47.jpg)
Nos permite modificar el objeto Response devuelto por el controlador
El FrameworkBundle implementa varios listeners ProfilerListener WebDebugToolbarListener ResponseListener EsiListener
![Page 48: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/48.jpg)
kernel.controller
kernel.request
kernel.view
kernel.response
kernel.exception
3
2
1
4
5
![Page 49: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/49.jpg)
Sólo es llamado si hay una excepción
![Page 50: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/50.jpg)
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
50 desymfony 2012 - Concierto de eventos
![Page 51: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/51.jpg)
51
![Page 52: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/52.jpg)
• Prioridad de los listeners
• Frenar la propagación
52
![Page 53: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/53.jpg)
• Master & Sub Request
• Listeners.xml
• app/console container:debug
53
![Page 54: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/54.jpg)
1. Listeners
2. Miiii Eveeeentooooo
54 desymfony 2012 - Concierto de eventos
![Page 55: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/55.jpg)
![Page 56: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/56.jpg)
desymfony 2012 - Concierto de eventos 56
egulias
Eduardo Gulias
egulias
• Desarrollador web desde 2006
• Coqueteando con Symfony (y otros frameworks) desde 2007
• Entusiasta de PHP y Symfony
• Miembro del grupo Symfony Madrid • Actualmente trabajando como lider de del
equipo Symfony de ideup!
![Page 57: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/57.jpg)
desymfony 2012 - Concierto de eventos 57
javiacei
Francisco Javier Aceituno
javiacei
• 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
• Actualmente trabajando como Ingeniero del Software en Unidad Editorial
![Page 58: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/58.jpg)
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
58 desymfony 2012 - Concierto de eventos
![Page 59: deSymfony2012 - Concierto de eventos](https://reader031.fdocuments.mx/reader031/viewer/2022020116/55a783521a28ab333e8b4955/html5/thumbnails/59.jpg)
desymfony 2012 - Concierto de eventos 59