thinkphp6事件订阅,监听多个事件
创建一个事件类
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>";}