thinkphp6事件订阅,监听多个事件
创建一个事件类
php think make:event User
<?php
namespace app\event;
class User
{
public function __construct()
{
echo '<br>我是用户的登陆事件构造函数<br>';
}
public function login_event()
{
echo '我是login_event<br>';
}
}
创建一个监听类
php think make:listener User
<?php
namespace 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
<?php
namespace app\listener;
class UserLogout
{
public function handle()
{
echo 'UserLogout监听';
}
}
UserLogin.php
<?php
namespace 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>";
}