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
505 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!

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