lucid / signal
Event Dispatcher Library
Requires (Dev)
- container-interop/container-interop: ~1.1.0
- phpunit/phpunit: ^5.2
Suggests
- container-interop/container-interop: For using the ContainerAwareEventDispatcher goodness.
This package is not auto-updated.
Last update: 2024-12-21 20:13:58 UTC
README
Requirements
php >= 5.6
Installation
$ composer require lucid/signal
Usage
<?php use Lucid\Signal\EventInterface; use Lucid\Signal\EventDispatcher; $dispatcher = new EventDispatcher; $dispatcher->addHandler('my_event', function (EventInterface $event) { // do something });
Event Handlers
Eventhandlers can be any callable but must accept an instance of EventInterface
as their first argument.
Using handlers the implement the HandlerInterface
will automatically call the handleEvent
method on the handler if the event is dispatched.
<?php use Lucid\Signal\EventInterface; use Lucid\Signal\HandlerInterface; use Lucid\Signal\EventDispatcher; class MyHandler implements HandlerInterface { public function handleEvent(EventInterface $event) { // do something } }
<?php $dispatcher = new EventDispatcher; $handler = new MyHandler; $dispatcher->addHandler('my_event', $handler);
MyHandler::handleEvent
will now be called when my_event
is fired.
Event Delegation
Events are fired subsequentially unless all handlers where adressed or until
the Event object is being stopped. You can stop the eventdelegation in your
handler by calling $event->stop()
.
Custom Events
Event objects can be referred to message objects. You can easily create your
custom message objects by implementing the EventInterface
interface or
extending the Event
base class.
<?php namespace Acme\Message; use Lucid\Signal\Event; class SysMessage extends Event { private $message; public function setMessage($message) { $this->message = $message; } public function getMessage() { return $this->message; } }