Nuevo en Symfony 3.4: Subscripción a eventos desde el micro kernel

En Symfony 2.8, introdujimos el trait MicroKernel para configurar el framework Symfony de una manera más sencilla. Symfony 4, que se publica en noviembre de 2017, usará este micro kernel por defecto en todas las aplicaciones.

Mientras tanto, en Symfony 3.4 hemos mejorado el micro kernel para que puedas suscribirte a eventos desde el propio kernel. Para ello, solamente tienes que implementar la conocida interfaz EventSubscriberInterface y añadir los métodos que se encargan de procesar los eventos.

Considera por ejemplo una aplicación que quiere gestionar las posibles excepciones que se produzcan durante su ejecución. En Symfony 3.4, puedes hacer que el kernel escuche el evento KernelEvents::EXCEPTION e implemente la lógica que procesa esas excepciones:

// src/Kernel.php
namespace App;
 
use App\Exception\DangerException;
use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
use Symfony\Component\HttpKernel\Kernel as BaseKernel;
use Symfony\Component\HttpKernel\KernelEvents;
 
// añade aquí el "implements" para poder suscribirte a eventos
class Kernel extends BaseKernel implements EventSubscriberInterface
{
    use MicroKernelTrait;
 
    // ...
 
    public static function getSubscribedEvents()
    {
        return [KernelEvents::EXCEPTION => 'handleExceptions'];
    }
 
    public function handleExceptions(GetResponseForExceptionEvent $event)
    {
        if ($event->getException() instanceof DangerException) {
            $event->setResponse(Response::create('It\'s dangerous to go alone. Take this ⚔'));
        }
 
        // ...
    }
}

Esta funcionalidad fue contribuida por Maxime Steinhausser en el pull request #23812.

Fuente: New in Symfony 3.4: Subscribing to events in the micro kernel

Comentarios

Publicada el

21 de septiembre de 2017

Etiquetas

Proyectos Symfony destacados

La plataforma de eCommerce 100% Symfony que rivaliza con Magento y PrestaShop. Ver más

Síguenos en @symfony_es para acceder a las últimas noticias.