美文网首页
如何临时禁用模型观察者

如何临时禁用模型观察者

作者: 小甲鱼python | 来源:发表于2017-06-15 10:04 被阅读13次

在开发过程中我们会遇到需要临时禁用模型监听器的情况,比如有这么一个例子:

使用定义了一个订单模型的观察者:

namespaceApp\Observers;

useApp\Order;

useApp\Services\SMS;

useIlluminate\Http\Request;

/**

* Order observer.

*/

classOrderObserver

{

/**

* After order created.

*

* @param Order $order

*/

publicfunctioncreated(Order$order)

{

(newSMS())->send('order_created',$order->consumer_phone,[$order->no]);

}

}

它监听了一个 created 事件,即在订单创建后给用户发个短信。

在使用 faker 在 db:seed 填充数据的时候,我们是不需要给用户发短信的,这时候我们就希望能临时禁用掉观察者。

在 Laravel 模型里其实已经预留了一个方法:Model::unsetEventDispatcher(); 可以移除事件调度器。我们就可以在 seed 文件里使用它来完成了这个需求了:

Order::unsetEventDispatcher();

factory(App\Order::class,10)->create();// 创建10条假订单

转载来源合伴站点:LARAVEL.SO

如果你觉得眼前需要更好的提高你可以来千锋学PHP,国内排名第一的PHP机构。

相关文章

  • 如何临时禁用模型观察者

    在开发过程中我们会遇到需要临时禁用模型监听器的情况,比如有这么一个例子: 使用定义了一个订单模型的观察者: nam...

  • Happens-Before 规则

    内存模型 Java内存模型规范了JVM如何提供按需禁用缓存和编译优化的方法 volatile关键字,它最原始的意义...

  • Java内存模型

    一,内存模型的概念 Java内存模型本质就是规范了JVM如何提供按需禁用缓存和编译优化的方法。具体来说,这些方法包...

  • Spring事件传播机制

        Spring是基于事件驱动模型的,事件驱动模型也就是我们常说的观察者,或者发布-订阅模型。理解观察者模式更...

  • button特性

    button支持禁用特性,通过:disabled伪类自定义禁用样式 button默认盒子模型是border-box...

  • 事件驱动模型

    观察者模式与事件驱动模型 观察者模式: 事件驱动模型 2.事件驱动模型 事件源 持有监听器列表,或者各种类型监听器...

  • 【并发编程】- Java内存模型-Happens-Before规

    学习王宝令老师的《Java并发编程实战》记录的学习笔记。 Java内存模型规范了JVM如何提供按需禁用缓存和编译优...

  • 2020-02-14 临时的双重心智加工模型

    问题2 临时的双重心智加工模型 (三重心智模型是如何发展起来的?) A Temporary “Dual-Pro...

  • 02 Java内存模型

    简介 由于 Java 内存模型是个复杂的规范,可从不同视角解读。从程序员的视角可以理解为:它为我们提供了如何禁用缓...

  • 设计模式系列-观察者模式

    JAVA设计模式系列: 单例模式 观察者模式 观察者模型 定义 也称作发布/订阅模式。观察者模式定义了一种一对多的...

网友评论

      本文标题:如何临时禁用模型观察者

      本文链接:https://www.haomeiwen.com/subject/qkeyqxtx.html