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:
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.