发现了一个事件触发的问题

浏览:379 发布日期:2021/04/13 分类:ThinkPHP6专区 关键字: 事件
触发事件时,如果$event参数是事件类对象时,$event = get_class($event);
$event的值会带上命名空间,比如:app\event\UserLogin
Event::listen('UserLogin','app\listener\Userlogin');
监听这样设置是匹配不上的
Event::listen('app\event\UserLogin','app\listener\Userlogin');
得设置成这样才能匹配上
我比较菜啊,不知道这个地方就是这样设计的
/**
* 触发事件
* @access public
* @param string|object $event 事件名称
* @param mixed $params 传入参数
* @param bool $once 只获取一个有效返回值
* @return mixed
*/
public function trigger($event, $params = null, bool $once = false)
{
if (is_object($event)) {
$params = $event;
$event = get_class($event);
}

if (isset($this->bind[$event])) {
$event = $this->bind[$event];
}

$result = [];
$listeners = $this->listener[$event] ?? [];
$listeners = array_unique($listeners, SORT_REGULAR);
最佳答案
评论( 相关
后面还有条评论,点击查看>>