attwframework / event
AttwFramework 的事件组件
dev-master
2014-09-28 05:42 UTC
Requires
- php: >=5.3.0
This package is auto-updated.
Last update: 2024-09-16 04:21:57 UTC
README
AttwFramework 的事件组件.AttwFramework.
测试 ##Composer ###下载
{ "require": { "attwframework/event": "dev-master" } }
###如何使用 ###创建事件 首先,创建一个 Attw\Event\EventManager
的实例
use Attw\Event\EventManager; $eventManager = EventManager::getInstance();
然后,创建一个监听器。监听器将执行事件的动作。它可以是一个可调用的函数
$eventManager->listen('after_login', function ($event) { $params = $event->getParams(); $username = $params['username']; echo 'Welcome ' . $username; });
或者实现 Attw\Event\EventListenerInterface
接口的类
namespace You\Namespace\Event\Listener; use Attw\Event\EventListenerInterface; class UserListener implements EventListenerInterface { public function afterLogin(Event $event) { $params = $event->getParams(); $username = $params['username']; echo 'Welcome ' . $username; } }
$eventManager->listen('after_login', 'You\Namespace\Event\Listener\UserListener.afterLogin');
注意: 监听器始终以参数的形式接收事件。
###抛出事件 创建一个 Attw\Event\Event
的实例,并设置监听器所需的参数
use Attw\Event\Event; $event = new Event(); $event->setParams(array('username' => $user->getName())); $eventManager->trigger('after_login', $event);
###自定义事件示例
namespace You\Namespace\Event; use Attw\Event\Event; class UserEvent extends Event { private $user; public function setUsername($username) { $this->username = $username; } public function getUsername() { return $this->username; } }
###优先级事件 将优先级顺序的数字作为第三个参数传递。
$eventManager->listen('some_name', 'You\Namespace\Event\Listener\YourListener.methodName1', 2);//The last to be executed $eventManager->listen('some_name', 'You\Namespace\Event\Listener\YourListener.methodName2', 4);//The first to be executed $eventManager->listen('some_name', 'You\Namespace\Event\Listener\YourListener.methodName3', 3);//The second to be executed
###移除事件 使用方法 Attw\Event\EventManager::unlisten($name = null, $listener = null)
。
按名称移除
$eventManager->unlisten('some_name');
按监听器移除(移除此监听器对所有事件的监听)
$eventManager->unlisten(null, 'You\Namespace\Event\Listener\YourListener.methodName');
按名称和监听器移除(移除事件上的监听器)
$eventManager->unlisten('some_name', 'You\Namespace\Event\Listener\YourListener.methodName');