helmich / flow-eventbroker
包含事件分发机制的TYPO3 Flow包
资助包维护!
martin-helmich
donate.helmich.me
Requires
- typo3/flow: *
This package is auto-updated.
Last update: 2024-08-28 04:41:08 UTC
README
为TYPO3 Flow提供简单的事件分发库。
安装
该包在Packagist上可用。请在您的composer配置文件中使用以下设置
{
"require": {
"helmich/flow-eventbroker": "*"
}
}
示例
发布事件
事件是带有@Event\Event
注解的常规方法
<?php
namespace My\Example;
use Helmich\EventBroker\Annotations as Event;
class Emitter {
public function doSomething() {
// ...
$this->publishSomeEvent(new SomeEvent("foo"));
}
/**
* @Event\Event
*/
protected function publishSomeEvent(SomeEvent $event) {
}
}
订阅事件
监听器也是带有@Event\Listener
注解的常规方法。要监听的事件类在注解中作为参数指定。
<?php
namespace My\Example;
use Helmich\EventBroker\Annotations as Event;
class Listener {
/**
* @Event\Listener("My\Example\SomeEvent")
*/
public function myListener(SomeEvent $event) {
}
}
同步和异步事件
默认情况下,监听器将以异步方式调用。在默认实现中,事件将被排队,并在主应用程序运行结束时在事件循环中分发(其他、较晚的实现可能会通过将事件分发给另一个进程来完全异步地执行此操作)。
您可以使用@Event\Listener
注解中的"sync"标签显式声明要同步处理的监听器(在事件发布时)
<?php
namespace My\Example;
use Helmich\EventBroker\Annotations as Event;
class Listener {
/**
* @Event\Listener("My\Example\SomeEvent", sync=TRUE)
*/
public function myListener(SomeEvent $event) { }
}
待办事项
- 增加单元测试覆盖率
- 提供异步事件处理的机制