1. Go to this page and download the library: Download hehex/hehep-hevent library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
namespace apiadmin\behaviors;
use hehe\core\hevent\base\Event;
/**
* 登录事件
*/
class LoginEvent extends Event
{
/**
* @var User
*/
public $user;
// 定义事件的监听器集合
protected $listeners = [
LoginEventListener::class,
LoginEventListener::class . '@@addlog',
LoginEventListener::class . '@setSession'
];
public function __construct(?User $user,array $propertys = [])
{
$this->user = $user;
parent::__construct($propertys);
}
}
use hehe\core\hevent\EventManager;
$hevent = new EventManager([]);
// 准备事件数据
$user = new User();
// 触发事件
$hevent->trigger(LoginEvent::class,['user'=>$user]);
use hehe\core\hevent\EventManager;
$hevent = new EventManager([]);
$hevent->setAlias('login_event',LoginEvent::class);
// 准备事件数据
$user = new User();
// 使用事件类触发事件方式1
$hevent->trigger(LoginEvent::class,['user'=>$user]);
// 使用别名触发事件方式2
$hevent->trigger('login_event',['user'=>$user]);
use hehe\core\hevent\EventManager;
use apiadmin\behaviors\LoginEvent;
$hevent = new EventManager([]);
// 默认Event事件类创建对象
$event = $hevent->newEvent();
// 指定事件类创建对象
$event = $hevent->newEvent(LoginEvent::class);
// 指定事件别名创建对象
$event = $hevent->newEvent('login_event');
// 触发事件
$hevent->trigger($event,['user'=>$user]);
namespace apiadmin\behaviors;
use hehe\core\hevent\base\Event;
use apiadmin\behaviors\LoginEvent;
// 定义登录事件处理器
class LoginEventListener
{
// 推送登录事件至队列,通知其他订阅系统
public function handle(LoginEvent $event)
{
$user = $event->user;
}
// 添加登录日志
public static function addlog(LoginEvent $event)
{
$user = $event->user;
}
// 设置会话
public function setSession(Event $event)
{
$user = $event->user;
}
}
// 事件数据
$user = new User();
// 创建事件对象时传递构造参数
$event = new LoginEvent($user);
// 创建事件对象时传递构造参数
$event = $hevent->newEvent(LoginEvent::class,$user);
// 通过setParams设置事件数据
$event = new LoginEvent();
$event->setParams(['user'=>$user,'logintime'=>date('Y-m-d H:i:s')]);
// 触发事件时提供参数
$hevent->trigger($event,['user'=>$user,'logintime'=>date('Y-m-d H:i:s')]);
use hehe\core\hevent\base\Event;
use apiadmin\behaviors\LoginEvent;
class LoginEventListener
{
// 默认监听器方法
public function handle(LoginEvent $event)
{
$user = $event->user;
}
// 添加登录日志
public static function addlog(LoginEvent $event)
{
$user = $event->user;
}
// 设置会话
public function setSession(Event $event)
{
// 获取事件属性数据
$user = $event->user;
// 获取事件非属性数据
$logintime = $event->getParam('logintime');
// 获取所有参数
$params = $event->params;
}
}
namespace apiadmin\behaviors;
use hehe\core\hevent\base\Event;
use hehe\core\hevent\annotation\AnnEvent;
/**
* 登录事件
* @AnnEvent("user_login")
*/
class LoginEvent extends Event
{
public $user;
}
namespace admin\service;
use hehe\core\hevent\annotation\AnnEventListener;
use hehe\core\hevent\base\Event;
class LoginEventListener
{
/**
* 设置会话
* @AnnEventListener("user_login")
* @param Event $event
*/
public function handle(Event $event)
{
// 逻辑代码
}
/**
* 添加登录日志
* @AnnEventListener("user_login")
* @param Event $event
*/
public static function addlog(Event $event)
{
// 逻辑代码
}
/**
* 设置会话
* @AnnEventListener("user_login")
* @param Event $event
*/
public function setSession(Event $event)
{
// 逻辑代码
}
}
use hehe\core\hevent\EventManager;
use apiadmin\behaviors\LoginEvent;
$hevent = new EventManager([]);
// 测试样例
$user = new User();
// 无需主动设置监听器
$this->hevent->trigger('user_login',['user'=>$user]);
$this->hevent->trigger(LoginEvent::class,['user'=>$user]);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.