Maison > développement back-end > tutoriel php > Automatisez Symfony\\Component\\EventDispatcher\\EventSubscriberInterface::getSubscribeEvents() avec un simple trait

Automatisez Symfony\\Component\\EventDispatcher\\EventSubscriberInterface::getSubscribeEvents() avec un simple trait

Patricia Arquette
Libérer: 2024-11-27 18:10:11
original
343 Les gens l'ont consulté

Automate Symfony\Component\EventDispatcher\EventSubscriberInterface::getSubscribedEvents() with simple Trait

Aimez-vous SymfonyComponentEventDispatcherEventSubscriberInterface et sa méthode getSubscribeEvents() ?

class AwesomeSubscriber implements Symfony\Component\EventDispatcher\EventSubscriberInterface
{

    public static function getSubscribedEvents(): array
    {
        return [
            HappyEvent::class => 'happy',
            CoolEvent::class => 'coll',
        ];
    }

    public function happy(HappyEvent $event): void {}

    public function coll(CoolEvent $event): void {}

}
Copier après la connexion

Je déteste ça !

  1. Tableau avec représentation textuelle du nom de la méthode
  2. Nom de la classe d'événement écrit plusieurs fois ?

Oui, le nouveau Symfony a l'attribut #[AsEventListener], mais que se passe-t-il si vous utilisez un autre framework ou une ancienne version d'event-dispatcher ou si vous n'aimez pas les attributs ?

Il existe une solution simple ?
Voir ce trait https://github.com/Zarganwar/symfony-event-dispatcher-utils.
Cela vous offre un moyen simple (automatique) de vous abonner aux événements avec la méthode __invoke.

class AwesomeSubscriber implements Symfony\Component\EventDispatcher\EventSubscriberInterface
{
    use AutoEventSubscriberTrait; // <<<--- This is it! ❤️

    public function __invoke(HappyEvent|AnotherEvent $event): void {}

}
Copier après la connexion

ou SRP abonné par événement

class HappySubscriber implements Symfony\Component\EventDispatcher\EventSubscriberInterface
{
    use AutoEventSubscriberTrait;

    public function __invoke(HappyEvent $event): void {}

}

class CoolSubscriber implements Symfony\Component\EventDispatcher\EventSubscriberInterface
{
    use AutoEventSubscriberTrait;

    public function __invoke(CoolEvent $event): void {}

}
Copier après la connexion

Bien sûr, vous pouvez utiliser des interfaces et des types d'union.

Allez sur https://github.com/Zarganwar/symfony-event-dispatcher-utils et installez

le compositeur nécessite zarganwar/symfony-event-dispatcher-utils

Profitez-en ! ?

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal