desymfony 2012 - concierto de eventos

Post on 20-Jun-2015

3.196 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

1 desymfony 2012 - Concierto de eventos

2 desymfony 2012 - Concierto de eventos

3

1. Escenario principal

2. El patrón observador

3. El Event Dispatcher

4. Los Eventos en Symfony 2

4 desymfony 2012 - Concierto de eventos

1. Escenario principal 2. El patrón observador

3. El Event Dispatcher

4. Los Eventos en Symfony 2

5 desymfony 2012 - Concierto de eventos

6 desymfony 2012 - Concierto de eventos

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

8 desymfony 2012 - Concierto de eventos

9 desymfony 2012 - Concierto de eventos

¿Qué queremos ahora?

10 desymfony 2012 - Concierto de eventos

¿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

12 desymfony 2012 - Concierto de eventos

Si guardamos el usuario desde otro lugar tenemos que duplicar el código.

13 desymfony 2012 - Concierto de eventos

Introducir el código de github dentro de la librería

14 desymfony 2012 - Concierto de eventos

Introducir el código de github dentro de la librería

15 desymfony 2012 - Concierto de eventos

Introducir el código de github dentro de la librería

16 desymfony 2012 - Concierto de eventos

Introducir el código de github dentro de la librería

17 desymfony 2012 - Concierto de eventos

Permitir modificar el usuario antes de guardarse

18 desymfony 2012 - Concierto de eventos

Permitir modificar el usuario antes de guardarse

pero …, ¿cómo hacemos eso?

19 desymfony 2012 - Concierto de eventos

Permitir modificar el usuario antes de guardarse

pero …, ¿cómo hacemos eso?

Patrón observador

20 desymfony 2012 - Concierto de eventos

1. Escenario principal

2. El patrón observador 3. El Event Dispatcher

4. Los Eventos en Symfony 2

21 desymfony 2012 - Concierto de eventos

22 desymfony 2012 - Concierto de eventos

23

Gestor Usuarios (sujeto)

Rastreador Github

(observador)

github

desymfony 2012 - Concierto de eventos

24

Gestor Usuarios (sujeto)

Rastreador Github

(observador)

github

desymfony 2012 - Concierto de eventos

25

Gestor Usuarios (sujeto)

Rastreador Github

(observador)

github

desymfony 2012 - Concierto de eventos

26

Gestor Usuarios (sujeto)

Rastreador Github

(observador)

github

usuario

desymfony 2012 - Concierto de eventos

27

Gestor Usuarios (sujeto)

Rastreador Github

(observador)

github

usuario

desymfony 2012 - Concierto de eventos

1. Escenario principal

2. El patrón observador

3. El Event Dispatcher 4. Los Eventos en Symfony 2

28 desymfony 2012 - Concierto de eventos

Implementa el patrón observador de manera simple y efectiva.

29 desymfony 2012 - Concierto de eventos

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

31

Gestor Usuarios

Rastreador Github

(Listener)

github

Event Dispatcher

desymfony 2012 - Concierto de eventos

32

Gestor Usuarios

Rastreador Github

(Listener)

github

Event Dispatcher

desymfony 2012 - Concierto de eventos

33

Gestor Usuarios

Rastreador Github

(Listener)

github

Event Dispatcher

antes_crear_usuario

Event usuario

desymfony 2012 - Concierto de eventos

34

Gestor Usuarios

Rastreador Github

(Listener)

github

Event Dispatcher

antes_crear_usuario

Event usuario

desymfony 2012 - Concierto de eventos

35

Gestor Usuarios

Rastreador Github

(Listener)

github

Event Dispatcher

antes_crear_usuario

Event usuario

desymfony 2012 - Concierto de eventos

1. Escenario principal

2. El patrón observador

3. El Event Dispatcher

4. Los Eventos en Symfony 2

36 desymfony 2012 - Concierto de eventos

Event Dispatcher

HttpKernel

kernel.exception kernel.request ...

HttpKernelEvent

• getRequestType()

• getKernel()

• getRequest()

kernel.controller

kernel.request

kernel.view

kernel.response

kernel.exception

kernel.controller

kernel.request

kernel.view

kernel.response

kernel.exception

1

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

kernel.controller

kernel.request

kernel.view

kernel.response

kernel.exception

1

2

Nos permite modificar el controlador establecido en kernel.request

kernel.controller

kernel.request

kernel.view

kernel.response

kernel.exception

3

2

1

Sólo es llamado si el controlador no devuelve un objeto Response

Nos permite crear un sub sistema de vistas

kernel.controller

kernel.request

kernel.view

kernel.response

kernel.exception

3

2

1

4

Nos permite modificar el objeto Response devuelto por el controlador

El FrameworkBundle implementa varios listeners ProfilerListener WebDebugToolbarListener ResponseListener EsiListener

kernel.controller

kernel.request

kernel.view

kernel.response

kernel.exception

3

2

1

4

5

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

50 desymfony 2012 - Concierto de eventos

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

54 desymfony 2012 - Concierto de eventos

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!

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

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

desymfony 2012 - Concierto de eventos 59

top related