A free and open-source book on ZF3 for beginners

Translation into this language is not yet finished. You can help this project by translating the chapters and contributing your changes.

3.7. Eventos y Ciclo de Vida de la Aplicación

Como hemos aprendido de las secciones anteriores, con cada petición HTTP se crea un objeto Zend\Mvc\Application. Normalmente una aplicación «vive» por un segundo o menos (este tiempo es suficiente para generar la respuesta HTTP). La «vida» de la aplicación tiene varias etapas.

Zend Framework 3 usa el concepto de eventos. Una clase puede lanzar un evento, y otro clase puede escuchar los eventos. Técnicamente, lanzar un evento significa llamar a otra clase, más exactamente a un método «callback» de la clase. El administrador de eventos está implementado dentro del componente Zend\EventManger.

Cada etapa de vida de una aplicación se inicia cuando la aplicación lanza un un evento (este evento está representado par la clase MvcEvent que está ubicada en el namespace Zend\Mvc). Otras clases (tanto las que pertenecen a Zend Framework como las de nuestra aplicación) pueden escuchar los eventos y actuar en consecuencia.

Los cinco principales eventos (etapas de vida) se muestran abajo:

Bootstrap. Cuando este evento es lanzado por la aplicación un módulo tiene la posibilidad de registrarse como un oyente (listener) de los próximos eventos de la aplicación en su método callback onBootstrap().

Route. Cuando este evento se lanza el URL de la petición es analizado usando una clase router (normalmente es la clase Zend\Route\Http\TreeRouteStack). Si existe una correspondencia exacta entre la URL y una ruta, la petición es pasada a una clase-controlador específica asignada en el router.

Dispatch. La clase-controlador atiende o «despacha» la petición usando el método de acción correspondiente y produce los datos que se muestran en la página web.

Render. En este evento las datos producidos por el método de acción en el controlador se pasan a la clase Zend\View\Renderer\PhpRenderer para ser representados. La clase «renderer» usa un archivo de plantilla de vista o view template para producir una página HTML.

Finish. En este evento la respuesta HTTP se envía al cliente.

El flujo de eventos se muestra en la figura 3.3:

Figura 3.3. Flujo de eventos durante el ciclo de vida de la aplicación Figura 3.3. Flujo de eventos durante el ciclo de vida de la aplicación

A pesar de que es relativamente raro, algunos ejemplos prácticos de como hacer escuchar y actuar a un evento se encuentran en el capítulo Crear un Nuevo módulo.


Top