美文网首页
Laravel事件之观察者模式

Laravel事件之观察者模式

作者: 欢喜的看着书 | 来源:发表于2023-07-24 16:29 被阅读0次

观察者模式

Laravel 的事件提供了一个简单的观察者实现,能够订阅和监听应用中发生的各种事件。

既然用到观察者实现,那我们先来说下什么是观察者

观察者模式 (Observer), 当一个对象的状态发生改变时,依赖他的对象会全部收到通知,并自动更新。

场景:一个事件发生后,要执行一连串更新操作。传统的编程方式,就是在事件的代码之后直接加入处理逻辑,当更新的逻辑增多之后,代码会变得难以维护。这种方式是耦合的,侵入式的,增加新的逻辑需要改变事件主题的代码

观察者模式实现了低耦合,非侵入式的通知与更新机制

具体代码实现



/**
 * 观察者接口类
 * Interface Observer
 */
interface Observer
{
    public function update($event_info = null);
}

/**
 * 观察者1
 */
class Observer1 implements Observer
{
    public function update($event_info = null)
    {
        echo "观察者1 收到执行通知 执行完毕!\n";
    }
}

/**
 * 观察者1
 */
class Observer2 implements Observer
{
    public function update($event_info = null)
    {
        echo "观察者2 收到执行通知 执行完毕!\n";
    }
}



/**
 * 事件
 * Class Event
 */
class Event
{
    //用于观察者注册的数组
    protected $this->observers = [];

    //增加观察者
    public function add(Observer $observer)
    {
        $this->observers[] = $observer;
    }

    //事件通知
    public function notify()
    {
        foreach ($this->observers as $observer) {
            $observer->update();
        }
    }

    /**
     * 触发事件
     */
    public function trigger()
    {
        //通知观察者
        $this->notify();
    }
}

//创建事件
$event = new Event();
//为事件增加旁观者
$event->add(new Observer1());
$event->add(new Observer2());
//执行事件
$event->trigger();

Laravel 中使用事件

在 laravel 中事件使用特别简单,我们可以通过

php artisan make:event // 创建事件
php artisan make:listener // 创建事件监听者,可以为多个。 

laravel 事件类保存在 app/Events 目录中,而这些事件的的监听器则被保存在 app/Listeners 目录下。


// 在程序需要触发事件的地方通过event()触发事件,比如注入给用户发送站内信的事件,发送邮件的事件

event(new SendMailEvent());

相关文章

  • laravel队列、消息通知和观察者模式的理解

    推荐设计模式-PHP观察者设计模式laravel事件监听--模型事件新特性深入了解laravel消费队列的两种工作...

  • laravel事件

    Laravel 事件提供了简单的观察者模式实现,允许你订阅和监听应用中的事件。 事件和监听都是阻塞式应用,如果耗时...

  • laravel 之事件讲解

    Laravel 事件提供了简单的观察者模式实现,允许你订阅和监听应用中的事件。事件和监听都是阻塞式应用,如果耗时的...

  • Laravel 5.1 事件

    简介 Laravel事件提供了简单的观察者模式实现,允许你订阅和监听应用中的事件。事件类通常存放在app/Even...

  • 观察者模式和发布订阅模式的区别

    观察者模式和发布订阅模式最大的区别就是发布订阅模式有个事件调度中心。 在观察者模式中,观察者需要直接订阅目标事件;...

  • Spring 事件机制概述

    Spring 事件机制是观察者模式的典型应用,本文将由浅入深从观察者模式、java事件机制、Spring事件机制三...

  • RxJava 原理篇

    一、框架思想 观察者模式观察者自下而上注入被观察者被观察者自上而下发射事件观察者模式 装饰器模式自上而下,被观察者...

  • Java - 事件处理机制

    Java - 事件处理机制 一、观察者模式 了解事件和监听,需要先了解观察者模式。 接下来介绍一个观察者模式的场景...

  • JS设计模式之发布/订阅模式、观察者模式

    1.发布/订阅模式 2.观察者模式 在观察者模式中,观察者需要直接订阅目标事件。在目标发出内容改变的事件后,直接接...

  • SpringBoot事件监听机制及观察者/发布订阅模式详解

    本篇要点 介绍观察者模式和发布订阅模式的区别。 SpringBoot快速入门事件监听。 什么是观察者模式? 观察者...

网友评论

      本文标题:Laravel事件之观察者模式

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