1 Trait

1.1 可以在 Trait 中定义一个静态的 bootFooBar() 方法,注:FooBar 是你的 Trait 名称

namespace App\Traits;

use App\Archive;

trait HasArchive{    public static function bootHasArchive()    {        static::creating(function($model) {            info("Trait [HasArchive] creating...");        });        static::deleting(function($model) {            $model->archive()->delete();        });    }

    /**     * Model has an archive.     *     * @return mixed     */    public function archive()    {        return $this->morphOne(Archive::class, 'model_has_archive');    }}1.2 这种方式非常适合用来对关联中间表中的数据进行相应处理

2 Model2.1 定义静态的 boot() 方法
namespace App;

use App\Traits\HasArchive;use Illuminate\Database\Eloquent\Model;use Kalnoy\Nestedset\NodeTrait;

class Area extends BaseModel{    use HasArchive;    use NodeTrait;

    protected $table = 'areas';    protected $guarded = [];

    public static function boot()    {        parent::boot();        static::creating(function (Area $area) {            info("Model [Area] creating...");        });    }

}2.2 这种方式定义起来比较简单粗暴,直接有效

3 利用 Observer 类3.1 这种方法就不举例了,官方文档可查阅3.2 此种方式,代码分离比较合理3.3 建议,除了使用 Trait 方式复用代码外,都应该采用这种方法

4 小结4.1 经测试,对事件的侦听,可在以上三种方式中都实现,不会相互覆盖。Laravel 会顺序调用

转载于:https://www.cnblogs.com/mouseleo/p/10915905.html

Laravel 事件侦听的几个方法 [Trait, Model boot(), Observer Class]相关推荐

  1. vue 侦听器侦听对象属性_Spring中的异步和事务性事件侦听器

    vue 侦听器侦听对象属性 内置的事件发布功能从Spring的早期版本开始存在,并且对于处理同一应用程序上下文中Spring组件之间的基本通信仍然有用. 通常,应用程序可以生成应用程序事件(可以是任意 ...

  2. 侦听127.0.01_Spring 4.2中由注释驱动的事件侦听器

    侦听127.0.01 介绍 在应用程序内交换事件已成为许多应用程序中必不可少的部分,幸运的是,Spring为瞬态事件(*)提供了完整的基础结构. 最近对事务绑定事件的重构为我提供了一个借口,以在实践中 ...

  3. Spring中的异步和事务性事件侦听器

    内置的事件发布功能从Spring的早期版本开始存在,对于处理同一应用程序上下文中Spring组件之间的基本通信仍然有用. 通常,应用程序可以生成应用程序事件(可以是任意对象)并侦听它们. 整个机制非常 ...

  4. Spring 4.2中由注释驱动的事件侦听器

    介绍 在应用程序内交换事件已成为许多应用程序中必不可少的部分,幸运的是,Spring为瞬态事件(*)提供了完整的基础结构. 最近对事务绑定事件的重构为我提供了一个借口,以在实践中检查Spring 4. ...

  5. 读《Javascript高级程序设计》中的javascript事件处理程序(事件侦听器)心得

    今天读了<Javascript高级程序设计>中的javascript事件处理程序(事件侦听器)部分的内容,总结一些自己的心得: 事件就是用户或者浏览器自身执行的某种动作.例如click . ...

  6. 监听返回app_基于 Redis 消息队列实现 Laravel 事件监听及底层源码探究

    在 Laravel 中,除了使用 dispatch 辅助函数通过 Illuminate\Bus\Dispatcher 显式推送队列任务外,还可以通过事件监听的方式隐式进行队列任务推送,在这个场景下,事 ...

  7. javascript事件侦听器是什么东西,用来干哈子

    平常使用 on+事件类型绑定事件有缺陷: btn.onclick=function(){console.log(456);} 现在需要给这个事件再绑定一次 btn.onclick=function() ...

  8. Vue EventBus事件侦听($on、$emit、$off、$once)

    eventBus.js import Vue from 'vue';export const EventBus = new Vue(); components/Parent.vue <templ ...

  9. Java事件侦听器函数_SWT 计算器 按钮事件监听 获取按钮text值

    用swt插件做计算器,监听所有按钮.通过按钮text值判断哪个按钮被点击,如"0"按钮被点击,就在text框里加个0.现在问题是怎样在监听函数里得到button的text值.10个 ...

最新文章

  1. 在注意力中重新思考Softmax:分解非线性,这个线性transformer变体实现多项SOTA
  2. ionic 定位 android,ionic3定位 (android)
  3. UA MATH566 统计理论 用点估计构造置信区间
  4. Python怎么安装第三方库-numpy-libnum等; (详细版)
  5. 【SpringBoot集成ElasticSearch 02】Java HTTP Rest client for ElasticSearch Jest 客户端集成(配置+增删改查测试源码)【推荐使用】
  6. java多线程绘图_菜鸟学Java之 Java2D 多线程绘图
  7. 使用while 循环实现输出 1, 2, 3, 4, 5, 7, 8, 9, 11, 12(提示:输出结果为一行,没有6和10,12后面没有逗号)
  8. 数据可视化|实验五 分析1996-2015年人口数据各个特征的分布与分散状况
  9. 用python做生物信息数据分析_基于Python的自动获取生物信息数据的软件设计
  10. HDU 6836 Expectation(矩阵生成树 + 期望)
  11. 六年级计算机应用计划,2017六年级信息技术下册教学计划
  12. 用得最多的altium版本_83版《神雕》有多猛?收视率破90%!金庸最满意的版本...
  13. POJ 3670 Eating Together
  14. WeLink的杀手锏和远程办公软件的另一面
  15. mybatisplus批量插入原理_Word如何批量打印请柬、奖状、桌牌?一键批量制作就这么简单...
  16. sqlserver调用mysql存储过程_sqlserver调用存储过程
  17. 输入url到页面返回的过程
  18. 106. 数据库增删改的封装
  19. 切比雪夫加权 matlab,matlab切比雪夫多项式
  20. m基于LS+变步长LMS的Volterra级数数字预失真DPD系统matlab仿真

热门文章

  1. [转载]:TRY...CATCH (Transact-SQL)
  2. 自学python如何找工作-新手小白如何自学Python出去找工作?我用这五本书告诉你...
  3. python简单代码演示效果-10分钟教你用python 30行代码搞定简单手写识别!
  4. python第三方库排行-140种Python标准库、第三方库和外部工具
  5. python下载安装教程图解-一招解决:各种版本的Python下载安装教程
  6. python视频课程推荐-听说程序员都在用,5款Python开发工具推荐
  7. python流程控制-python简单流程控制
  8. python条件语句-Python if else条件语句详解
  9. python免费自学网站-python免费么
  10. 软件测试用python一般用来做什么-Python用来做Web开发的优势有哪些