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

实例:

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

相关推荐
Q_Q51100828529 分钟前
python+django/flask的篮球馆/足球场地/运动场地预约系统
spring boot·python·django·flask·node.js·php
Q_Q5110082851 小时前
python+django/flask的城市供水管网爆管预警系统-数据可视化
spring boot·python·django·flask·node.js·php
悠悠~飘2 小时前
php基础-系统函数-第15天
php
laocaibulao14 小时前
mac电脑composer命令如何指定PHP版本
macos·php·composer
zz-zjx14 小时前
云原生LVS+Keepalived高可用方案(二)
开发语言·php·lvs
网络精创大傻14 小时前
PHP 与 Node.js:实际性能对比
开发语言·node.js·php
KevinLyu14 小时前
PHP内核详解· 内存管理篇(七)· 调整内存块大小
php
hj104318 小时前
php上传企业微信附件的方法
开发语言·php·企业微信
游九尘18 小时前
在 PHP 中打印数据(调试、输出内容)
php
深圳市恒讯科技20 小时前
使用站群服务器做SEO,如何避免被搜索引擎判定为“站群作弊”?
服务器·搜索引擎·php