thinkphp6事件监听和触发多个事件
2022-11-24 11:10:29
198
{{single.collect_count}}

创建一个事件类

 php think make:event User

在这里插入图片描述
在这里插入图片描述

<?phpnamespace app\event;class User{public function __construct(){echo '<br>我是用户的登陆事件构造函数<br>';}public function login_event(){echo '我是login_event<br>';}}

创建一个监听类

php think make:listener User 

在这里插入图片描述
在这里插入图片描述

<?phpnamespace app\listener;class User{//依赖注入的方法public function handle(\app\event\User $event){echo 'listener监听得到:' . $event->login_event() . '<br>';}}

控制器中调用监听事件并触发

use think\facade\Event;public function hellolisten($name = 'ThinkPHP6'){echo '<br>hellolisten=' . $name;//监听类Event::listen('UserListener','app\listener\User');//触发监听事件Event::trigger('UserListener');}

在这里插入图片描述

修改配置文件确定触发事件

修改event.php 配置文件,增加监听事件
在这里插入图片描述

创建两个监听类,如下图:

在这里插入图片描述

UserLogout.php

<?phpnamespace app\listener;class UserLogout{public function handle(){echo 'UserLogout监听';}}

UserLogin.php

<?phpnamespace app\listener;class UserLogin{public function handle(){echo 'UserLogin监听';}}

确定触发事件的地方,这里为index控制器hellolisten方法

public function hellolisten($name = 'ThinkPHP6'){echo "开始位置<br>";//直接使用事件类触发Event::trigger('UserLogin');Event::trigger('UserLogout');echo "<br>结束位置<br>";}

在这里插入图片描述

回帖
全部回帖({{commentCount}})
{{item.user.nickname}} {{item.user.group_title}} {{item.friend_time}}
{{item.content}}
{{item.comment_content_show ? '取消' : '回复'}} 删除
回帖
{{reply.user.nickname}} {{reply.user.group_title}} {{reply.friend_time}}
{{reply.content}}
{{reply.comment_content_show ? '取消' : '回复'}} 删除
回帖
收起
没有更多啦~
{{commentLoading ? '加载中...' : '查看更多评论'}}