zoukankan      html  css  js  c++  java
  • laravel里面使用event

    模式:大概是通过一个自定义的event,一个handler,还有一个binder,然后用来简化通知模型

    生成自定义的event

    ./artisan make:event MyEvent

    生成自定义的handler

    ./artisan handler:event MyEventHandler --event=MyEvent

    然后在EventServiceProvider里面添加,可以添加多个,演示就只注册一个了

    protected $listen = [
            'AppEventsMyEvent' => [
                'AppHandlersEventsMyEventHandler',
            ],
        ];

    如果你要多个handler,可以先在EventServiceProvider里面写好,然后命令

    ./artisan event:generate

    触发event

    $aaaa = 'sfsdfsdf';
    $response = Event::fire(new AppEventsMyEvent($aaaa));

    你会发现,在handler的handle方法被触发,不过看phpdoc,这个方法似乎是void返回,不知道这个response有什么用处

    --------------------------------------------------------------------------------------------------------------------------------------------

    注册event事件组

    保留上面的MyEvent,别的不要了

    注册我们的MyEventGroupHandler,这里演示一个event,subscribe方法必须定义

    <?php namespace App;
    
    class MyEventGroupHandler {
    
        /**
         * Handle user login events.
         */
        public function onMyEvent($event)
        {
            echo "MyEventGroupHandler";
            dd($event);
        }
    
        /**
         * Register the listeners for the subscriber.
         *
         * @param  IlluminateEventsDispatcher  $events
         * @return array
         */
        public function subscribe($events)
        {
            $events->listen('AppEventsMyEvent', 'AppMyEventGroupHandler@onMyEvent');
        }
    }

    动态注册监听event

    $subscriber = new AppMyEventGroupHandler;
    Event::subscribe($subscriber);

    触发事件

    $podcast = 'sfsdfsdf';
    $response = Event::fire(new AppEventsMyEvent($podcast));

    xdebug发现,MyEventGroupHandler的onMyEvent被断下

    如果原来的myEventHandler也被注册,也能得到通知。

    发现两种方式似乎没太大区别,一个静态注册,另一个动态注册,留着以后再说吧

  • 相关阅读:
    SQL Union 和Union All 的区别
    SqlHelper.cs
    转载WPF:创建你的第一个WPF项目
    数据库分页存储过程
    sql 常用基础查询
    创建表--自动编号字段且自增
    模糊查询
    模式的定义
    C#计算两个日期之间相差的天数
    优化SQL查询:如何写出高性能SQL语句
  • 原文地址:https://www.cnblogs.com/ziyouchutuwenwu/p/4274539.html
Copyright © 2011-2022 走看看