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

实例:

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

相关推荐
我最厉害。,。3 小时前
PHP 反序列化&原生类 TIPS&字符串逃逸&CVE 绕过漏洞&属性类型特征
android·开发语言·php
2401_890665867 小时前
免费送源码:Java+ssm+HTML 三分糖——甜品店网站设计与实现 计算机毕业设计原创定制
java·python·微信小程序·html·php·课程设计·android-studio
大G哥19 小时前
PHP标签+注释+html混写+变量
android·开发语言·前端·html·php
傻啦嘿哟19 小时前
HTTP代理基础:网络新手的入门指南
开发语言·php
BXCQ_xuan1 天前
Typecho博客网站头部SEO优化完整指南
运维·服务器·数据库·php·web
人类群星闪耀时1 天前
5G赋能远程医疗:从愿景到现实的技术变革
开发语言·5g·php
onejason1 天前
利用 PHP 爬虫按关键字搜索 1688 商品详情:实战指南
前端·php
foryoufeng1 天前
Laravel代码生成器,快速构建项目代码,统一团队编码风格
php·laravel
亿坊电商2 天前
PHP框架在微服务迁移中能发挥什么作用?
开发语言·微服务·php
帅云毅2 天前
Web漏洞--XSS之订单系统和Shell箱子
前端·笔记·web安全·php·xss