大卡车/container-aware-event-dispatcher

符合PSR-14的简单事件分发器,使用PSR-11容器。

1.0.0 2021-04-13 20:19 UTC

This package is auto-updated.

Last update: 2024-09-14 04:31:32 UTC


README

一个简单的事件分发器,与"psr/container": "^2.0""psr/event-dispatcher": "^1.0"一起工作。

基本用法

<?php

class SomeEvent implements \Dakwamine\Event\EventInterface
{
  const EVENT_NAME = 'Any string';

  public function getName(){
    return static::EVENT_NAME;
  }
}

class SomeEventListener implements \Dakwamine\Event\EventListenerInterface
{
  public function handleEvent(\Dakwamine\Event\EventInterface $event) {
    // Do stuff related to $event, like dispatching to other methods.
    if ($event->getName() === SomeEvent::EVENT_NAME) {
      // ...
    }
  }
}

// The container.
$container = new \League\Container\Container();

// Add the listener to the container.
$container->share(SomeEventListener::class);

// This object holds the lists of class names per event.
$listenerProvider = new \Dakwamine\Event\ContainerAwareListenerProvider($container);

// Register the listener. Optionally set the priority.
$listenerProvider->addListener(SomeEvent::EVENT_NAME, SomeEventListener::class, 42);

// Dispatch the event. Listeners will be instantiated using the container by the listener provider.
$eventDispatcher = new \Dakwamine\Event\EventDispatcher($listenerProvider);
$eventDispatcher->dispatch(new SomeEvent());