From bb917a42969b7187e271dfc9f0b6245cf686eb4d Mon Sep 17 00:00:00 2001 From: Peter Gribanov Date: Mon, 2 Oct 2017 17:10:17 +0300 Subject: [PATCH] add docs for create subscriber --- README.md | 3 ++- docs/{ => listener}/listener.md | 6 ++--- docs/listener/subscriber.md | 43 +++++++++++++++++++++++++++++++++ 3 files changed, 48 insertions(+), 4 deletions(-) rename docs/{ => listener}/listener.md (93%) create mode 100644 docs/listener/subscriber.md diff --git a/README.md b/README.md index 176bac9..73c8f7a 100644 --- a/README.md +++ b/README.md @@ -131,7 +131,8 @@ $bus->pullAndPublish($purchase_order); * [Base usage](docs/base.md) * [Raise events in self](docs/raise_in_self.md) * Listener - * [Create listener](docs/listener.md) + * [Create listener](docs/listener/listener.md) + * [Create subscriber](docs/listener/subscriber.md) * Locator * [Direct binding locator](docs/listener/locator/direct_binding.md) * [PSR-11 Container locator](docs/listener/locator/psr-11_container.md) *([PSR-11](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-11-container.md))* diff --git a/docs/listener.md b/docs/listener/listener.md similarity index 93% rename from docs/listener.md rename to docs/listener/listener.md index 4cc85b6..d4e5a73 100644 --- a/docs/listener.md +++ b/docs/listener/listener.md @@ -105,8 +105,8 @@ $locator->register(PurchaseOrderCompletedEvent::class, [$listener, 'handlePurcha You can use exists locators of listener: - * [Direct binding locator](listener/locator/direct_binding.md) - * [PSR-11 container aware locator](listener/locator/psr-11_container.md) - * [Symfony container aware locator](listener/locator/symfony_container.md) + * [Direct binding locator](locator/direct_binding.md) + * [PSR-11 container aware locator](locator/psr-11_container.md) + * [Symfony container aware locator](locator/symfony_container.md) Or you can create custom locator that implements `GpsLab\Domain\Event\Listener\Locator\EventListenerLocator` interface. diff --git a/docs/listener/subscriber.md b/docs/listener/subscriber.md new file mode 100644 index 0000000..e07194e --- /dev/null +++ b/docs/listener/subscriber.md @@ -0,0 +1,43 @@ +Event subscriber +================ + +You can handle many events in one subscriber. + +```php +class PurchaseOrderSubscriber implements Subscriber +{ + public static function subscribedEvents() + { + return [ + PurchaseOrderCreatedEvent::class => ['handlePurchaseOrderCreated'], + PurchaseOrderCompletedEvent::class => ['handlePurchaseOrderCompleted'], + ]; + } + + public function handlePurchaseOrderCreated(PurchaseOrderCreatedEvent $event) + { + // do something + } + + public function handlePurchaseOrderCompleted(PurchaseOrderCompletedEvent $event) + { + // do something + } +} + +$listener = new PurchaseOrderListener(); + +// register event listener in listener locator +$locator = new DirectBindingEventListenerLocator(); +$locator->registerSubscriber(new PurchaseOrderSubscriber()); +``` + +## Listener locator + +You can use exists locators of listener: + + * [Direct binding locator](locator/direct_binding.md) + * [PSR-11 container aware locator](locator/psr-11_container.md) + * [Symfony container aware locator](locator/symfony_container.md) + +Or you can create custom locator that implements `GpsLab\Domain\Event\Listener\Locator\EventListenerLocator` interface.