关于 event 事件部分的一些疑问?

最近在做验证码部分的开发,很简单。
因为是协作开发,所以想把它解耦,就被安排用事件去解决。
翻了很多事件的文档,也简单写出了一个事件。唯一的疑问就是只能在请求中主动的去调用事件吗

event(new enevt($params));

或者

Event::fire(new enevt($params));

没有办法比如在用户请求register接口的时候自动调用这个事件吗?
可能问的问题有点幼稚了,还望有经验的朋友帮忙简单描述一下

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

@SquirrelNo 事件本身不做什么事,事件只是被触发,监听者监听到有事件被触发,监听者会去执行具体的处理,也就是 Listeners, 在 app/Providers/EventServicePorvider.php 里的 属性 protected $listen 进行事件绑定后, 就知道谁该做哪件事了。

// app/Providers/EventServicePorvider.php
<?php

namespace App\Providers;

use Illuminate\Support\Facades\Event;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;

class EventServiceProvider extends ServiceProvider
{
    /**
     * The event listener mappings for the application.
     *
     * @var array
     */
    protected $listen = [
        //'Illuminate\Auth\Events\Registered' => [    // 这里进行事件和监听者的绑定,一个事件可以绑定多个 监听者
        //    'App\Listeners\LogRegisteredUser',
        //],
    ];
}
5年前 评论
讨论数量: 6

可以在你认为合适的任何地方去调用。

5年前 评论

@qloog 是吧? 只能主动的去调用它,没有办法在事件中映射它作用于哪个地方?

5年前 评论

可能是我理解事件的定义有问题,朋友跟我说是代码执行过程中抛出事件,即通知系统我要做什么了然后事件映射到监听的Handle中执行相应的逻辑,而不是我理解的那种在事件中定义该事件为谁服务。

5年前 评论

@SquirrelNo 事件本身不做什么事,事件只是被触发,监听者监听到有事件被触发,监听者会去执行具体的处理,也就是 Listeners, 在 app/Providers/EventServicePorvider.php 里的 属性 protected $listen 进行事件绑定后, 就知道谁该做哪件事了。

// app/Providers/EventServicePorvider.php
<?php

namespace App\Providers;

use Illuminate\Support\Facades\Event;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;

class EventServiceProvider extends ServiceProvider
{
    /**
     * The event listener mappings for the application.
     *
     * @var array
     */
    protected $listen = [
        //'Illuminate\Auth\Events\Registered' => [    // 这里进行事件和监听者的绑定,一个事件可以绑定多个 监听者
        //    'App\Listeners\LogRegisteredUser',
        //],
    ];
}
5年前 评论

你把事件和监听器搞混了吧

5年前 评论

@wallboy 怪我,一开始没有搞懂它的定义 :joy::joy::joy:

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!