ride/lib-event

Ride框架的事件库

1.0.1 2016-09-08 09:48 UTC

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