Skip to content

模块行为事件

ThinkPHP8 提供了以下系统内置事件:

事件描述参数
AppInit应用初始化
HttpRun应用开始
HttpEnd应用结束当前响应对象实例
LogWrite日志write方法标签位当前写入的日志信息
RouteLoaded路由加载完成
LogRecord日志记录

模块,可以在 核心控制器 文件中,监听以上的 AppInit 事件,而且有它就够了,具体请看下方示例。

监听 AppInit

在核心控制器文件内定义 AppInit 方法即可。

php
<?php

namespace modules\test;

class Test
{
    /**
     * 监听 AppInit
     */
    public function AppInit()
    {
        // AppInit 时执行的代码
    }

    /**
     * 安装模块时执行的方法
     */
    public function install()
    {

    }

    // ...
}

监听其他事件

先定义监听 AppInit 的方法,直接在该方法内注册其他事件的监听,因为 AppInit 是第一个执行的,此时注册监听正合适。

php
<?php

namespace modules\test;

use think\facade\Event;
use app\admin\model\UserScoreLog;

class Test
{
    /**
     * 监听 AppInit
     */
    public function AppInit()
    {
        // 监听会员注册成功事件(这个事件是ba定义的)
        Event::listen('user_register_successed', function ($user) {
            UserScoreLog::create([
                'user_id' => $user->id,
                'score'   => 10,
                'memo'    => '感谢注册,赠送10个积分',
            ]);
        });

        // 监听应用开始事件
        Event::listen('HttpRun', function () {
            // 应用开始了
        });
    }

    /**
     * 安装模块时执行的方法
     */
    public function install()
    {

    }

    // ...
}

BuildAdmin 内置事件列表

事件描述参数
backendInit管理员验权标签位管理员的鉴权类实例
frontendInit会员验权标签位会员的鉴权类实例
userRegisterSuccess会员注册成功标签位会员数据模型
uploadConfigInit上传信息配置App $app
cacheClearAfter清理系统缓存后App $app
AttachmentDel附件删除时AttachmentModel $attachment