2017 © Pedro Peláez
 

framework fatevent

A light event dispatching library

image

tianhe1986/fatevent

A light event dispatching library

  • Monday, January 22, 2018
  • by tianhe1986
  • Repository
  • 1 Watchers
  • 1 Stars
  • 6 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 2 Versions
  • 0 % Grown

The README.md

Fatevent

Fatevent是一个轻量级的PHP事件库,使用非常容易。, (*1)

安装

首先确保PHP版本在7.0以上。, (*2)

推荐通过Composer进行安装, (*3)

Composer的安装请参考官方配置。, (*4)

安装好Composer后,在你的项目中创建一个 composer.json 文件:, (*5)

{
    "require": {
        "tianhe1986/fatevent": "*"
    }
}

然后在项目文件夹下执行:, (*6)

$ composer install

之后添加autoloader:, (*7)

<?php
require "vendor/autoload.php";

使用

事件的处理示例如下,首先,需要监听某个事件,附加处理函数:, (*8)

use Fatevent\Fatevent;

Fatevent::on("test.test",
    function($eventData, $defaultData){
        //do something
    },
    "default data");

以上代码监听了test.test事件。接下来,在需要的地方触发对应的事件:, (*9)

use Fatevent\Fatevent;
Fatevent::trigger("test.test", "event data");

此时,之前附加的处理函数便会执行。在接下来的几个小节中,会详细的介绍使用的场景及函数。, (*10)

增加监听

function on($name, $handler, $data = null)

$name为事件名。, (*11)

$handler为处理函数,函数定义如下:, (*12)

function ($eventData, $defaultData)

$eventData为触发事件时附带的数据,$defaultData为监听时附带的数据。, (*13)

$data为监听时附带的数据。, (*14)

一个事件可以被多次监听,触发时多个处理函数会按监听的顺序依次调用。示例如下:, (*15)


use Fatevent\Fatevent; class Test { public function deal($eventData, $defaultData) { echo $eventData . " " . $defaultData . "\n"; } } function globalDeal($eventData, $defaultData) { echo "Hello, ". $defaultData . " " . $eventData . "\n"; } Fatevent::on("test.test", function($eventData, $defaultData){ echo "First\n"; }, "default data1"); Fatevent::on("test.test", "globalDeal", "default data2"); $test = new Test(); Fatevent::on("test.test", [$test, "deal"], "default data3"); Fatevent::trigger("test.test", "event data");

以上代码执行将输出, (*16)

First
Hello, default data2 event data
event data default data3

增加一次性监听

function once($name, $handler, $data = null)

参数与on一样,只是此处理函数在一次之后会被移除,下次再触发同一事件时不会再被调用。示例如下:, (*17)

use Fatevent\Fatevent;

Fatevent::on("test.test",
    function($eventData, $defaultData){
        echo "First\n";
    },
    "default data1");

Fatevent::once("test.test",
    function($eventData, $defaultData){
        echo "Second\n";
    },
    "default data2");

Fatevent::trigger("test.test", "event data");
Fatevent::trigger("test.test", "event data");

以上代码将输出, (*18)

First
Second
First

事件停止处理

有时候,你希望停止事件被继续处理,你可以通过从处理函数中返回 false 来实现。如下所示:, (*19)

use Fatevent\Fatevent;

Fatevent::on("test.test",
    function($data, $defaultData){
        echo "First\n";
        return false;
    },
    "default data");

Fatevent::on("test.test",
    function($data, $defaultData){
        echo "Second\n";
    },
    "default data");

Fatevent::trigger("test.test", "event data");

以上代码将输出, (*20)

First

注意,如果某个一次性处理函数还未被调用,事件就已经停止了,则此处理函数不会被移除。只有被调用过的一次性处理函数才会被移除。, (*21)

取消监听

function off($name, $handler)

可以取消某个处理函数,使用示例如下:, (*22)

use Fatevent\Fatevent;

// 全局函数
Fatevent::off("test.test", "function_name");

// 对象方法
Fatevent::off("test.test", [$object, "methodName"]);

// 静态类方法
Fatevent::off("test.test", ["\Bar", "methodName"]);

注意,匿名函数无法被取消,如果需要取消,请使用某个变量储存它。, (*23)

如果$handler为 null,则该事件上所有的处理函数都会被取消。, (*24)

触发事件

trigger($name, $data = null)

会触发某项事件,其中$data为触发事件时附加的数据:, (*25)

use Fatevent\Fatevent;

Fatevent::on("test.test",
    function($eventData, $defaultData){
        echo $defaultData . " " . $eventData;
    },
    "Hello");

Fatevent::trigger("test.test", "World");

以上代码将输出, (*26)

Hello World

The Versions

22/01 2018

dev-master

9999999-dev

A light event dispatching library

  Sources   Download

MIT

The Requires

  • php >=7.0

 

The Development Requires

by Wang Sijie

fatevent

22/01 2018

1.1.0

1.1.0.0

A light event dispatching library

  Sources   Download

MIT

The Requires

  • php >=7.0

 

The Development Requires

by Wang Sijie

fatevent