thinkphp6事件监听和触发多个事件

本文介绍如何在ThinkPHP6中实现事件监听功能,包括创建事件类、监听类,以及如何在控制器中触发监听事件。通过示例展示了事件监听的具体应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建一个事件类

 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>";
    }

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值