美文网首页
Lumen - 简单的事件监听

Lumen - 简单的事件监听

作者: 一梦三四年lyp | 来源:发表于2018-05-11 22:28 被阅读0次
    事件的原理就是 观察者模式 的实现
      新建一个事件类(被观察者)
      可以建立多个监听类(观察者)
      然后标记观察者和被观察者的关系,当被观察者变化时,通知观察者
    
    场景
      手机用户注册之后,发一份邮件到邮箱
      用户删除账号后,发一个事情推送
    
    使用
    首先再 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);  //逻辑处理
        }
    }
    

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

    相关文章

      网友评论

          本文标题:Lumen - 简单的事件监听

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