miguelsaddress / pesy
Pesy: PHP事件系统
v1.0
2016-03-26 22:17 UTC
Requires (Dev)
- phpunit/phpunit: 4.6.6
This package is not auto-updated.
Last update: 2024-09-14 17:59:02 UTC
README
这是一个事件系统,允许您广播由不同于发射器处理的不同实体的事件。
路径
路径可以是唯一的,例如 "myPath:extra:thing",也可以包含通配符 *
来表示它处理任何子事件路径,如 another:path:*
的情况,它将处理所有子路径,如 another:path:like:this
,但 它不会处理 路径如 another:path
。
初始化
创建一个处理器中心。它将是处理器的主要持有者。技术上,任何EventHandlerList都可以...
$handlersCentre = HandlersCentre::getWithHandlers(array( 'TextFileDump' => new TextFileDumpSampleHandler(array("sample:*")), 'OtherTextFileDump' => new TextFileDumpSampleHandler(array("another:path:*")) ));
一旦您有了处理器中心或您的列表,您就可以创建您的发射器,它将向通过参数传递的处理器列表中的注册处理器发射。
$eventEmitter = new EventEmitter($handlersCentre->getList());
现在,在您的代码中任何地方,您都可以创建一个事件并广播它。如果事件的路径由任何处理器处理,它将被处理。否则,它将被忽略。
$e = new TestEvent(); $e->setPath("sample:path"); $e->addData("key1", "value1"); $e->addData("key2", array(1,2,3)); $eventEmitter->broadcast($e);
这不会被处理,因为没有处理器在监听这个路径 wontBeHandled
。
$e = new TestEvent(); $e->setPath("wontBeHandled"); $e->addData("wontAppear", "in text file"); $eventEmitter->broadcast($e);
如前所述,这将被 OtherTextFileDump
处理器处理。
$e = new TestEvent(); $e->setPath("another:path:like:this"); $e->addData("will appear", "in text file"); $eventEmitter->broadcast($e);
联系
您可以通过我的twitter与我联系: @miguelsaddress