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也被注册,也能得到通知。

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

  • 相关阅读:
    控件还是还原到客户端的好
    练习之彩票一 需求整理和分析
    Oracle 查询并删除重复记录的SQL语句
    C# 如何生成CHM帮助文件
    C#生成CHM帮助文件—>续
    datagridview中用Enter代替tab实现焦点切换,可换行
    博客园的dotaer
    winfrom中datagridview指定单元格为编辑状态
    C#生成CHM帮助文件(linq版)
    C语言03
  • 原文地址:https://www.cnblogs.com/ziyouchutuwenwu/p/4274539.html
Copyright © 2011-2022 走看看