zoukankan      html  css  js  c++  java
  • Laravel入坑指南(10)——事件Event

    不知不觉,我们已经来到了第10小节。这一小节,我们一起讨论关于“事件”这个话题。众所周知,从二进制到汇编,再到高等级语言,这一路发展下来,代码都是顺序执行的,那么事件是什么?这个事件上本没有事件,纠结的人多了也就有了事件。

    如果你也是编程界的泥石流,你就会发现事件发源于消息(或者信号),当代码执行到某个特殊时刻想要做一件事情,我们就调用一个函数来处理,而这个函数就是我们说的“事件”。

    跟据上面的讨论,大家会发现,事件的普遍概念即是“函数调用”。所以它的好处不言而喻,那就是代码语义化以及降低代码的耦合度。当某个事情不处理了,我们取消事件函数的调用就行,就不需重新对主要的业务流程进行覆盖测试。

    Laravel框架的事件机制的实现,也是这种思维。一个事件(类)匹配一个侦听器(类),由对应的侦听器处理对应的事件。下面就让我们一起了解Laravel中事件如何使用:

    1、创建事件

     在创建事件之前,我们需要在/app/Providers/EventServiceProvider.php中的$listen一节中进行配置。如下图:

    上图的配置说明 ,有个MyEvent事件类,一旦这个事件类被触发,则由MyListener这个侦听器类进行处理。

    接下来,在项目的根目录中执行以下命令,自动生成MyEvent和MyListener两个类:

    php artisan event:generate

     生成后的结果,如下所示:

    2、事件分布与响应

    1) 事件的分发

    event(new MyEvent());    //根据真实的MyEvent构造函数进行实例化

    2) 事件的响应

    因为MyEvent对应的侦听器是MyListener,所以事件的响应即是MyEvent类中的handler函数:

    class MyListener
    {
        /**
         * Create the event listener.
         *
         * @return void
         */
        public function __construct()
        {
            //
        }
    
        /**
         * Handle the event.
         *
         * @param  MyEvent  $event
         * @return void
         */
        public function handle(MyEvent $event)
        {
            //在这里进行处理
        }
    }

    写在后面:在这一篇事件讨论话题中,所有的事件分发和响应都是同步执行的,虽然实现的位置不一样,但是一样的流水线执行。如果碰到像类似于发邮件这种耗时的操作,我们就需要采用异步执行,这时就需要列队。Laravel提供了列队的机制与配置,下一期我们讨论完成列队之后,我们会花点时间讨论一下列队异步事件的实现。

    这一篇就先到这里了,大家下期见:)

    ---------------------------  我是可爱的分割线  ----------------------------

    最后博主借地宣传一下,漳州编程小组招新了,这是一个面向漳州青少年信息学/软件设计的学习小组,有意向的同学点击链接,联系我吧。

  • 相关阅读:
    Hibernate一对多OnetoMany
    80端口被占用 PID = 4解决办法
    Devexpress Barmanager设置
    通过C# 打开一个应用程序
    C#DataTable操作
    C# Winform 双屏显示
    Dev gridview 调整字体大小
    在静态页面html中跳转传值
    js 求两个日期之间相差天数
    jQuery 知识积累
  • 原文地址:https://www.cnblogs.com/ddcoder/p/13424391.html
Copyright © 2011-2022 走看看