laravel框架 - 事件与监听器

一,绑定事件与监听器

app\Providers 下的EventServiceProvider.php中添加我们定义的事件与监听器

php 复制代码
    protected $listen = [
        Registered::class => [
            SendEmailVerificationNotification::class,
        ],
        'App\ebvent\RegisterMessage'=>[//事件
            'App\listeners\SendMessage'//监听器
        ],
    ];

二,生成事件 & 监听器

使用 event:generate 命令即可。这个命令会生成在 EventServiceProvider 中列出的所有事件和监听器。当然,已经存在的事件和监听器将保持不变:

php 复制代码
php artisan event:generate

三,编写业务逻辑

复制代码
在App\ebvent\目录下,打开你新创建的事件文件 RegisterMessage.php
php 复制代码
    public $teacher;
    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct($teacher)
    {
        $this->teacher = $teacher;
        //
    }

在App\listeners\目录下,打开你新创建的监听器文件 SendMessage.php

php 复制代码
    /**
     * Handle the event.
     *
     * @param  \App\ebvent\RegisterMessage  $event
     * @return void
     */
    public function handle(RegisterMessage $event)
    {
        Cache::add('name','张三');
        //
    }

四,在路由中使用事件

php 复制代码
Route::get('listeners', function () {
    $user = ['name' => 'peter'];
    event(new \App\Event\RegisterMessage($user));
    return 'ok';
});

当我们访问**/listeners路由时,会把$user** 变量传给事件,会执行构造方法,同时监听器也会执行handle方法

storage目录下可以看到两个缓存文件,说明事件和监听器起作用了

实例:

实现 用户登录 & 登出系统 分别记录 登录 登出日志

相关推荐
东宇科技5 小时前
让网页执行cmd命令
php
持敬chijing6 小时前
PHP开发-环境搭建-安装phpstudy-vscode工具
开发语言·vscode·php
MC皮蛋侠客7 小时前
TDengine C++ 系列(6):高性能写入——参数绑定、批量与 Schemaless
c++·php·tdengine
Hello_Damon_Nikola7 小时前
AC7911从入门到精通
开发语言·嵌入式硬件·物联网·php
sbjdhjd10 小时前
大三网安秋招核心学习前言(AI 安全 + Web 漏洞 + 内网渗透全考点)
人工智能·网络协议·学习·安全·网络安全·开源·php
运维行者_10 小时前
企业带宽监控工具实战:网络流量分析与异常排查的5个关键能力
运维·服务器·开发语言·网络·分布式·后端·php
吴声子夜歌11 小时前
正则指引——PHP
开发语言·正则表达式·php
Claire_8812 小时前
企业文件管理系统选型技术框架与主流产品对比分析
开发语言·php
COOLMO研究AI12 小时前
Python 如何给 AI API 实现断路器模式:防止雪崩与保护本地服务
人工智能·python·php
AC赳赳老秦12 小时前
网页公开附件自动采集:OpenClaw 批量下载页面内嵌 Word/Excel 附件,统一格式后结构化入库
java·python·word·php·excel·deepseek·openclaw