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目录下可以看到两个缓存文件,说明事件和监听器起作用了

实例:

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

相关推荐
道法自然|~14 分钟前
【PHP】简单的脚本/扫描器拦截与重要文件保护
开发语言·爬虫·php
发光小北1 小时前
SG-CAN (FD) NET-210(双通道 CAN (FD) 转以太网网关)特点与功能介绍
开发语言·网络·php
Spider赵毅3 小时前
python实战 | 如何使用海外代理IP抓取Amazon黑五数据
python·tcp/ip·php
李慕婉学姐3 小时前
【开题答辩过程】以《基于PHP的动漫社区的设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
开发语言·mysql·php
xixixi777774 小时前
STIX/TAXII:网络威胁情报的“普通话”与“顺丰快递”
开发语言·安全·php·威胁·攻击检测·stix·taxii
Bruce_Liuxiaowei4 小时前
全面TCP端口扫描:Nmap高级扫描技术与实战应用
网络·tcp/ip·网络安全·php
catchadmin5 小时前
PHP 8.6 新增 clamp() 函数
开发语言·php
隔壁小白5 小时前
PHP 8.1 枚举(Enums)详解
php
郑州光合科技余经理7 小时前
海外国际版同城服务系统开发:PHP技术栈
java·大数据·开发语言·前端·人工智能·架构·php
云老大TG:@yunlaoda3609 小时前
如何通过华为云国际站代理商OBS实现数据跨境传输与分发加速?
数据库·华为云·php