事件系统在一个程序中能起到非常大的作用,它可以使你的代码松散耦合,轻松的和其他模块通信,而不必硬编码.在cakephp中就自带了事件系统.
创建一个事件
use Cake\Event\Event;
$event = new Event($name, $subject, $data);
Event参数
name 事件名称 例如 Dao.testEvent
subject 将该事件应用于对象(通常是生成事件的对象)如 null,$this
data 事件的数据,侦听器可以获得该数据
发布一个事件
//在controller 中
$this->eventManager()->dispatch($event);
到这里事件就已经发布出去了,如果需要对这事件需要响应,比如一个用户注册事件,当事件发出后,自动发送欢迎邮件,那么就需要创建一个侦听器.
创建一个事件侦听器
use Cake\Event\EventListenerInterface;
class testEventListener implements EventListenerInterface
{
/**
* 返回监听事件
**/
public function implementedEvents()
{
return [
'Dao.testEvent' =>array(
'callable'=>array($this,'sendEmail')
)
];
}
public function sendEmail($event)
{
}
}
注册事件侦听器
将以下代码加入 /config/bootstrap.php
use Cake\Event\EventManager;
$addon = new testEventListener();
EventManager::instance()->on($addon);
完成