phmlabs/annovent

使用注解注册监听器的简单轻量级事件分派器

1.0.1 2016-01-14 15:09 UTC

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' ));