Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP
Code

Cómo usar el despachador de eventos de Symfony para PHP

by
Difficulty:IntermediateLength:ShortLanguages:

Spanish (Español) translation by Rene Soto (you can also view the original English article)

Hoy aprenderemos a usar el componente de despachador de eventos de Symfony, que te permite crear eventos y escuchas en tus aplicaciones PHP. Por lo tanto, los diferentes componentes de tu aplicación pueden comunicarse entre sí con un código débilmente acoplado.

¿Qué es el Componente de Despachador de Eventos de Symfony?

Puedes estar familiarizado con el patrón de observador de eventos, que te permite definir escuchas para eventos generados por el sistema para que se ejecuten cuando se activa el evento. De manera similar, el componente Symfony EventDispatcher te permite configurar un sistema en el que puedes crear eventos y escuchas personalizados. De esa manera, permite que los componentes de tu aplicación reaccionen si algo sucede en un sistema.

De hecho, el componente de despachador de eventos proporciona tres elementos sobre los que puede construir la arquitectura de su aplicación: event, listener y dispatcher. Todo el sistema está orquestado por la clase dispatcher, que genera eventos en los puntos apropiados de una aplicación y llama a los oyentes asociados con esos eventos.

Supongamos que deseas permitir que otros componentes en su aplicación reaccionen cuando se borra el caché. En ese caso, necesitas definir el evento de borrado de caché en primer lugar. Una vez que se borra el caché, puedes usar el despachador para activar el evento de borrado de caché, y eso notifica a todos los oyentes que están escuchando este evento. Esto le da a los oyentes la oportunidad de purgar cachés de componentes específicos.

En este artículo, exploraremos los conceptos básicos del componente despachador de eventos. Comenzaremos con la instalación y la configuración, y también crearemos algunos ejemplos reales para demostrar todos los conceptos mencionados anteriormente.

Instalación y Configuración del Despachador de Eventos

En esta sección, vamos a instalar el componente despachador de eventos. Supongo que ya has instalado Composer en tu sistema, porque lo necesitaremos para instalar el componente EventDispatcher.

Una vez que haya instalado Composer, siga adelante e instale el componente EventDispatcher usando el siguiente comando.

Debería haber creado el archivo composer.json, que debe tener este aspecto:

Vamos a editar más el archivo composer.json para que se vea como sigue:

Como hemos agregado una nueva entrada de mapa de clase, sigue adelante y actualiza el autocargador Composer ejecutando el siguiente comando.

Ahora, puede usar el espacio de nombres EventDispatchers para cargar automáticamente las clases en el directorio src.

Así que esa es la parte de instalación, pero ¿cómo se supone que debes usarla? De hecho, solo es cuestión de incluir el archivo autoload.php creado por Composer en su aplicación, como se muestra en el siguiente fragmento de código.

Cómo Crear, Enviar y Escuchar Eventos

En esta sección, veremos un ejemplo que demuestra cómo se puede crear un evento personalizado y configurar una escucha para ese evento.

La Clase Event

Para comenzar, sigue adelante y crea el archivo src /Events/ DemoEvent.php con el siguiente contenido.

Nuestra clase DemoEvent personalizada extiende la clase de Event central del componente EventDispatcher. La constante NAME contiene el nombre de nuestro evento personalizado: demo.event. Se utiliza cuando desea configurar un oyente para este evento.

La clase Listener

A continuación, vamos a crear la clase de listener src / Listeners / DemoListener.php con el siguiente contenido

La clase DemoListener implementa el método onDemoEvent que se activa cuando el sistema distribuye el evento DemoEvent. Por supuesto, aún no ocurrirá automáticamente, ya que necesitamos registrar al listener DemoListener para escuchar el evento demo.event usando la clase EventDispatcher.

Hasta ahora, hemos creado clases de eventos y oyentes. A continuación, veremos cómo unir todas estas piezas.

Un Archivo Ejemplo

Vamos a crear el archivo basic_example.php con el siguiente contenido.

La clase EventDispatcher es el elemento más importante en el componente EventDispatcher: te permite vincular a los oyentes con los eventos que desean escuchar. Hemos utilizado el método addListener de la clase EventDispatcher para escuchar el evento demo.event.

El primer argumento del método addListener es un nombre de evento, y el segundo argumento es el PHP callable que se desencadena cuando el evento registrado. En nuestro caso, hemos proporcionado el objeto DemoListener como oyente junto con el método onDemoEvent.

Por último, hemos utilizado el método dispatch de la clase EventDispatcher para enviar el evento demo.event.

Cuando se ejecuta el archivo basic_example.php, debe producir la siguiente salida.

Como era de esperar, se llama al método onDemoEvent de la clase DemoListener, y que a su vez llama al método getFoo de la clase DemoEvent a buscar la información relacionada con el evento.

¿Qué es un Event Subscriber?

En la sección anterior, creamos un ejemplo que demostró cómo crear un evento personalizado y un escucha personalizado. También discutimos cómo vincular un oyente al evento específico usando la clase EventDispatcher.

Ese fue un ejemplo simple, ya que solo queríamos configurar un oyente para un solo evento. Por otro lado, si deseas configurar escuchas para múltiples eventos o deseas agrupar lógicamente la lógica de manejo de eventos en una sola clase, debes considerar el uso de suscriptores de eventos porque te permiten mantener todo en un solo lugar.

En esta sección, revisaremos el ejemplo que se creó en la sección anterior.

La Clase Subscriber

Lo primero que debemos hacer es crear una clase de suscriptor que implemente la interfaz EventSubscriberInterface. Continúe y cree la clase src / Subsribers / DemoSubscriber.php como se muestra en el siguiente fragmento de código.

Dado que la clase DemoSubscriber implementa la interfaz EventSubscriberInterface, debe implementar el método getSubscribedEvents. El método getSubscribedEvents debe devolver una serie de eventos a los que desea suscribirse. Es necesario proporcionar el nombre del evento en una clave de la matriz y el nombre del método en un valor de matriz que se llama cuando se desencadena el evento.

Lo último es implementar el método de escucha en la misma clase. En nuestro caso, necesitamos implementar el método onDemoEvent, y ya lo hemos hecho.

Un Archivo Ejemplo

¡Es hora de probar nuestro suscriptor! Vamos a crear rápidamente el archivo suscriber_example.php con el siguiente contenido.

Es necesario utilizar el método addSubscriber de la clase EventDispatcher para suscribir su suscriptor personalizado, y la clase EventDispatcher encarga del resto. Eventos suscrito desde el método getSubscribedEvents que recupera e instala escuchas para los eventos. Aparte de eso, todo es lo mismo, y debería funcionar como se esperaba sin sorpresas.

¡Vamos a probarlo!

Y eso fue un suscriptor de eventos a tu disposición! Eso también nos lleva al final de este artículo.

Conclusión

Hoy, exploramos el componente de despachador de eventos de Symfony, que te permite configurar eventos y escuchas en tus aplicaciones PHP. Mediante el uso de esta biblioteca, puede crear un sistema de acoplamiento flexible que permite que los componentes de su aplicación se comuniquen entre sí sin esfuerzo.

¡Siéntate libre de compartir sus pensamientos y consultas utilizando los comentarios de abajo!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.