Gefällt Ihnen SymfonyComponentEventDispatcherEventSubscriberInterface und die Methode getSubscribedEvents()?
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 {} }
Ich hasse es!
Ja, das neue Symfony hat das Attribut #[AsEventListener], aber was ist, wenn Sie ein anderes Framework oder eine ältere Version des Event-Dispatchers verwenden oder Ihnen Attribute nicht gefallen?
Es gibt eine einfache Lösung?
Siehe diese Eigenschaft https://github.com/Zarganwar/symfony-event-dispatcher-utils.
Dies bietet Ihnen eine einfache (automatische) Möglichkeit, Ereignisse in der __invoke-Methode zu abonnieren.
class AwesomeSubscriber implements Symfony\Component\EventDispatcher\EventSubscriberInterface { use AutoEventSubscriberTrait; // <<<--- This is it! ❤️ public function __invoke(HappyEvent|AnotherEvent $event): void {} }
oder SRPAbonnent pro Veranstaltung
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 {} }
Natürlich können Sie Schnittstellen und Union-Typen verwenden.
Gehen Sie zu https://github.com/Zarganwar/symfony-event-dispatcher-utils und installieren Sie
Komponisten benötigen Zarganwar/Symfony-event-dispatcher-utils
Viel Spaß! ?
Das obige ist der detaillierte Inhalt vonAutomatisieren Sie Symfony\\Component\\EventDispatcher\\EventSubscriberInterface::getSubscribedEvents() mit einem einfachen Trait. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!