Yii 中应用一个事件大略是这个样子的

// 绑定事件$component->on($event::EVENT_NAME, [$object, 'methodNameA']);$component->on($event::EVENT_NAME, [$object, 'methodNameB']);// 触发事件$component->trigger($event::EVENT_NAME, $event); 
从下面代码中能够看出如果要触发一个 5 个监听监听的事件,是要入侵 6 行代码的,这显然是不够优雅的,所以写了个组件包将事件与监听绑定写在组件配置文件,调用的时候只需一行代码去触发事件。

源码

  • https://github.com/guanguans/yii-event

环境要求

  • Yii > 2.0

装置

$ composer require guanguans/yii-event -vvv

配置

...'components' => [    ...    'event' => [        'class' => \Guanguans\YiiEvent\Event::className(),        'listen' => [            // 事件类名            \app\events\ExampleEvent::className() => [                      // 监听该事件监听的类名                \app\listeners\ExampleListener::class,            ],        ],    ],    ...],...

应用示例

创立事件 app\events\ExampleEvent.php

namespace app\events;use yii\base\Event;class ExampleEvent extends Event{    public $name = 'example';}

创立监听 app\listeners\ExampleListener.php

namespace app\listeners;use Guanguans\YiiEvent\ListenerInterface;use yii\base\Event;class ExampleListener implements ListenerInterface{    public static function handle(Event $event)    {        // to do something.        var_export($event->name);    }}

触发事件

Yii::$app->event->dispatch(new ExampleEvent());// orevent(new ExampleEvent());

验证后果

'example'