关于事件定义的问题想请教一下?

教程中使用的事件

use Illuminate\Auth\Events\Registered;

这个事件的定义是laravel自带的,然后看了下其中的代码

namespace Illuminate\Auth\Events;

use Illuminate\Queue\SerializesModels;

class Registered
{
    use SerializesModels;

    /**
     * The authenticated user.
     *
     * @var \Illuminate\Contracts\Auth\Authenticatable
     */
    public $user;

    /**
     * Create a new event instance.
     *
     * @param  \Illuminate\Contracts\Auth\Authenticatable  $user
     * @return void
     */
    public function __construct($user)
    {
        $this->user = $user;
    }
}

并没有发现事件在在那种条件下被触发。 如果在我们自定义的事件中,一般是通过什么方式,或者说触发条件一般是写在哪个地方呢。 我看文档中 定义事件也只是简单的 编写了 App\Events下的一个文件。 我个人的猜想是,这个App\Events 下的事件定义只是单纯的将 某个模型与事件进行了关联,触发事件默认的只有模型对应的 store delete update 方法, 类似于 监听器中固定的saving等方法,不知道这样理解对不对。但是文档中并没有给予触发事件的条件细化的方法。(如果是这样的话,事件observer 岂不是比事件listen更加的简洁和灵活,两者作用相差又不大,岂不是功能有点重复)

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
leo
最佳答案

用户注册事件是 Laravel 的 Auth 模块里触发的,在 vendor/laravel/framework/src/Illuminate/Foundation/Auth/RegistersUsers.phpregister() 方法中。

事件定义只是单纯的将 某个模型与事件进行了关联

不对,事件和模型没有必然联系,所以你后面说的 observelistener 更简洁灵活不一定成立,因为事件不一定有模型。

自定义事件通常都是通过 event() 辅助函数来触发。

5年前 评论
讨论数量: 3
leo

用户注册事件是 Laravel 的 Auth 模块里触发的,在 vendor/laravel/framework/src/Illuminate/Foundation/Auth/RegistersUsers.phpregister() 方法中。

事件定义只是单纯的将 某个模型与事件进行了关联

不对,事件和模型没有必然联系,所以你后面说的 observelistener 更简洁灵活不一定成立,因为事件不一定有模型。

自定义事件通常都是通过 event() 辅助函数来触发。

5年前 评论

Observer的事件就是普通的事件,只是针对模型做了一些封装,本质还是基于laravel底层的事件系统的

5年前 评论

@leo
@FMW 谢谢 :blush:,是我文档看的不够仔细,看漏了事件是需要通过分发的,类似于消息通知一样。

5年前 评论

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