ride / lib-event
Ride框架的事件库
1.0.1
2016-09-08 09:48 UTC
Requires
- ride/lib-reflection: ^1.0.0
This package is auto-updated.
Last update: 2024-09-12 23:46:39 UTC
README
Ride PHP框架的事件库。
本库包含内容
事件管理器
EventManager接口是这个事件系统的外观。您可以从这里添加和删除事件监听器,并触发事件。
通过GenericEventManager类提供了一种通用实现。
事件
当您在EventManager上触发事件时,将创建一个Event实例并将其传递给监听器。该Event类包含事件名称、潜在参数,并允许您停止级联到后续的监听器。
事件监听器
EventListener实例定义了事件、回调和监听器的权重。权重较低的监听器将在权重较高的监听器之前被调用。
事件加载器
GenericEventManager通过EventLoader接口具有懒加载功能。
该接口的目的是在事件首次触发时开始解析监听器。
代码示例
查看此代码示例以了解本库的功能。
<?php use ride\library\event\loader\io\EventListenerIO; use ride\library\event\loader\GenericEventLoader; use ride\library\event\GenericEventManager; use ride\library\event\Event; $eventManager = new GenericEventManager(); // add some event listeners $eventManager->addEventListener('event', 'callback'); // provide a name of the event and a callback $eventManager->addEventListener('event', array('MyClass', 'callback'), 10); // added a weight to influence order $eventManager->addEventListener('test', 'onEvent'); // trigger an event $eventManager->triggerEvent('test'); $eventManager->triggerEvent('test', array('var' => 'value')); // event listener callback function onEvent(Event $event) { echo $event->getName(); echo $event->getArgument('var'); $event->setPreventDefault(); // stop the listener cascade after this listener } // you can lazy load the events through an EventLoader class YourEventListenerIO implements EventListenerIO { public function readEventListeners() { return array( 'event' => array( new EventListener('event', 'callback'), ); ); } } $eventListenerIO = new YourEventListenerIO(); $eventLoader = new GenericEventLoader($eventListenerIO); // all the events will be read at the first trigger, but only initialized when // the actual event is triggered $eventManager->setEventLoader($eventLoader);
安装
您可以使用Composer安装此库。
composer require ride/lib-event