eserozvataf/scabbia2-events

该包已被弃用,不再维护。未建议替代包。

Scabbia2 事件组件

v0.1.2 2015-09-16 02:34 UTC

This package is auto-updated.

Last update: 2023-09-08 20:06:25 UTC


README

此组件是一个简单的事件分发器,允许注册对某些事件的回调并链式执行它们。

Build Status Scrutinizer Code Quality Total Downloads Latest Stable Version Latest Unstable Version Documentation Status

使用方法

委托

use Scabbia\Events\Delegate;

$delegate = new Delegate();

$delegate->subscribe(function (...$parameters) {
    echo 'first subscriber:';
    var_dump($parameters);
});

$delegate->subscribe(function (...$parameters) {
    echo 'second subscriber:';
    echo count($parameters);
});

$delegate->invoke('a', 'b', 'c');

具有优先级的委托

use Scabbia\Events\Delegate;

$delegate = new Delegate();

// a subscription with priority = 300
$delegate->subscribe(function (...$parameters) {
    echo 'first subscriber:';
    var_dump($parameters);
}, null, 300);

// a subscription with priority = 1 (will be executed first)
$delegate->subscribe(function (...$parameters) {
    echo 'second subscriber, but more important:';
    echo count($parameters);
}, null, 1);

$delegate->invoke('a', 'b', 'c');

具有破坏性的委托

use Scabbia\Events\Delegate;

$delegate = new Delegate();

$delegate->subscribe(function (...$parameters) {
    echo 'first subscriber:';
    var_dump($parameters);

    // breaks the execution
    return false;
});

$delegate->subscribe(function (...$parameters) {
    echo 'second subscriber, but not going to be executed:';
    echo count($parameters);
});

$delegate->invoke('a', 'b', 'c');

事件

use Scabbia\Events\Events;

$eventsManager = new Events();

$eventsManager->on('click', function (...$parameters) {
    echo "clicked on x={$parameters[0]} and y={$parameters[1]}!";
});

$eventsManager->on('double_click', function (...$parameters) {
    echo 'double clicked!';
});

$eventsManager->dispatch('click', 5, 10);

链接

贡献

任何贡献都公开接受。欢迎修复错误、新功能和额外模块。所有贡献应提交到eserozvataf/scabbia2-events 仓库。

  • 要贡献代码:Fork 仓库,将您的更改推送到您的分支,并提交拉取请求。
  • 要报告错误:如果某些功能不起作用,请使用 GitHub 问题报告。
  • 要支持: Donate