Lumen - 简单的事件监听

2018-05-11  本文已影响0人  一梦三四年lyp
事件的原理就是 观察者模式 的实现
  新建一个事件类(被观察者)
  可以建立多个监听类(观察者)
  然后标记观察者和被观察者的关系,当被观察者变化时,通知观察者
场景
  手机用户注册之后,发一份邮件到邮箱
  用户删除账号后,发一个事情推送
使用
首先再 app/Providers 注册一个事件监听器
app/Providers/EventServiceProvider.php
代码如下
  <?php

  namespace App\Providers;

  use Laravel\Lumen\Providers\EventServiceProvider as ServiceProvider;

class EventServiceProvider extends ServiceProvider
{
    /**
     * The event listener mappings for the application.
     *
     * @var array
     */
    protected $listen = [
        'App\Events\CreateEvent' => [       //监听的事件
            'App\Listeners\CreateListener',      //事件发生后做的逻辑处理(观察者)
        ]

    ];
}
创建事件器
再app/Events/文件下穿创建CreatekEvent.php

<?php
/**
 * Created by PhpStorm.
 * User: 雷布思
 * Date: 2018/5/11
 * Time: 21:38
 */

namespace App\Events;


use Illuminate\Queue\SerializesModels;

class CreateEvent extends Event
{
  //  use SerializesModels;

    public $id;
    //创建一个事件
    public function __construct($data)
    {
        $this->id = $data; //把值赋给ID  
    }

}
创建事件监听者
    在app/Listeners/下创建CreateListener.php

    <?php

    namespace App\Listeners;

    use App\Events\CreateEvent;
    use App\Events\ExampleEvent;
    use Illuminate\Queue\InteractsWithQueue;
    use Illuminate\Contracts\Queue\ShouldQueue;

    class CreateListener{
      /**
     * Create the event listener.
     *
     * @return void
     */
      public function __construct()
      {
      //
      }

      /**
     * Handle the event.
     *
     * @param  ExampleEvent  $event
     * @return void
     */
    public function handle(CreateEvent $event) 
    {
        //$sevent 对象是从事件哪里传递过来的一个集合
        dd($event->id);  //逻辑处理
    }
}

一个简单的事件就这么完工了~~~

上一篇下一篇

猜你喜欢

热点阅读