phmlabs / annovent
使用注解注册监听器的简单轻量级事件分派器
1.0.1
2016-01-14 15:09 UTC
Requires
- doctrine/annotations: ~1.0.0
- phmlabs/namedparameters: ~1.0.0
Requires (Dev)
- phpunit/phpunit: ~3.7.0
This package is auto-updated.
Last update: 2024-09-06 05:09:53 UTC
README
#Annovent
Annovent 是一个简单的使用事件分派器,灵感来源于 symfony 组件的事件分派实现。它试图提供 symfony 所有的功能,并增加一些有用的扩展。
##简单使用
Annovent 分派器可以像 symfony 一样简单地使用
$dispatcher = new Dispatcher(); $dispatcher->connect('SomeComponent.Render', array($listener, 'Method1')); $dispatcher->notify(new Event('SomeComponent.Render', array('foo' => 'bar'));
##命名空间
此事件分派器的一个额外功能是所谓的命名空间。可以将监听器注册到属于特定命名空间的完整事件集合中。
$dispatcher->connect('SomeComponent.*', array($listener, 'Method1')); $dispatcher->connect('*', array($listener, 'Method2'));
当触发以 SomeComponent 开头的事件时,第一个监听器将被通知。第二个监听器始终被通知。
##注解
将监听器连接到特定事件不仅限于 connect 方法。也可以使用注解(参见 doctrine common)来注册监听器。
class Listener { /** * @Event("SomeComponent.Render") */ public function method1(Event $event) { } } $dispatcher->connectListener( new Listener );
使用 connectListener 方法可以一次性连接多个回调。
##命名参数
如果需要,事件分派器可以使用命名参数。
class Listener2 { /** * @Event("SomeComponent.Render") */ public function method1($argument1, $foo) { } } $dispatcher->notify(new Event('SomeComponent.Render', array('foo' => 'bar', 'argument1' => 'arg1' ));