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

实例:

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

相关推荐
DigitalOcean7 天前
Laravel 开发者已在 DigitalOcean 上开通超过 10 万台服务器
前端·laravel
两个人的幸福10 天前
Windows 桌面应用自研 PHP 队列(下):完整代码与六大工程化优化
php
BingoGo12 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
JaguarJack12 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
用户30745969820713 天前
PHP 扩展——从入门到理解
php
鹏仔先生13 天前
拷贝漫画APP下载页PHP程序,后台带免费AI写作
php
云水一下13 天前
从零开始学 PHP 系列(一):PHP 的前世今生与开发环境搭建
开发语言·php
xingpanvip13 天前
星盘接口开发文档:本命盘接口指南
android·开发语言·css·php·lua
酉鬼女又兒14 天前
零基础入门计算机网络运输层:端到端通信核心作用、端口号分类规则、复用分用工作机制及UDP与TCP协议全方位对比详解
网络·网络协议·tcp/ip·计算机网络·考研·udp·php
dog25014 天前
不要再继续优化 TCP
网络协议·tcp/ip·php