alexanderc/open-fw-eventer

此包已被弃用,不再维护。没有建议的替代包。

OpenFW框架中使用的事件管理器

v1.0.0-RC2 2013-11-15 15:58 UTC

This package is not auto-updated.

Last update: 2022-02-01 12:28:19 UTC


README

这是一个由OpenFW框架使用的库。

Eventer- is an event manager that makes your life easier when using event driven development.
There are a lot of libraries doing this, but not that beautifully ;)

优点

  • 无依赖项
  • 易于使用
  • RESTful API
  • 使用最新的PHP特性
  • 代码注释详尽
  • ...更多...

要求

  • PHP 5.5及以上
  • awesomeness

安装

  • 使用composer(通过packagist)

     "alexanderc/open-fw-eventer": "dev-master"
    
  • ...或者简单地使用您的自动加载器(PSR-0兼容)

示例

<?php
use OpenFW\Events\Eventer;
use OpenFW\Events\Event;
use OpenFW\Events\Matchers\BinaryMatcher;
use OpenFW\Events\Matchers\RegexMatcher;
use OpenFW\Events\Traits\SimplifiedApiTrait;

$eventer = new Eventer();

$events = [
     'foo.bar.event',
     'foo.baz.smth',
     'foo.habra.event',
     'smth.habra.post'
];

foreach($events as $event) {
     $eventer->register($event);
}

echo "Adding some listeners\n";

$eventer->addListener(new BinaryMatcher('foo.habra.event'), function(Event $event) {
     echo sprintf("This will be called on %s event only\n", $event);
});

$eventer->addListener(new RegexMatcher('.+\.habra\..+'), function(Event $event) {
     echo sprintf("Wow, calling habra events! (%s)\n", $event);
});

$eventer->addOnceListener(new RegexMatcher('foo\..+\.event'), function(Event $event) {
     echo sprintf("This event is one of [foo.bar.event, foo.habra.event] -> %s. ", $event),
             "Also this is thrown only once!\n";
});

echo "Trigger all events once using binary matcher\n";
foreach($events as $event) {
     $eventer->trigger($event, ['some', 'data', 'provided', 'to', 'each', 'listener']);
}

echo "Trigger all events that matches against an RegexMatcher\n";
$eventer->triggerUsingMatcher(
             new RegexMatcher('foo\..+\.event'),
             ['some', 'data', 'provided', 'to', 'each', 'listener']
);

// too much words??? check SimplifiedApiTrait...

凭证

OpenFW::Eventer php框架。

版权所有 (C) 2013 AlexanderC