lucid / signal
v0.0.1
2016-04-12 19:51 UTC
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-09-14 18:42:07 UTC
README
要求
php >= 5.6
安装
$ composer require lucid/signal
用法
<?php use Lucid\Signal\EventInterface; use Lucid\Signal\EventDispatcher; $dispatcher = new EventDispatcher; $dispatcher->addHandler('my_event', function (EventInterface $event) { // do something });
事件处理器
事件处理器可以是任何可调用的,但必须接受一个 EventInterface
实例作为其第一个参数。
使用实现 HandlerInterface
的处理器时,如果事件被调度,将自动调用处理器的 handleEvent
方法。
<?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);
当 my_event
触发时,将调用 MyHandler::handleEvent
。
事件委派
除非所有处理器都被处理或事件对象被停止,否则事件将依次触发。您可以在处理器中通过调用 $event->stop()
来停止事件委派。
自定义事件
事件对象可以引用消息对象。您可以通过实现 EventInterface
接口或扩展 Event
基类来轻松创建自定义消息对象。
<?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; } }