事件的原理就是 观察者模式 的实现
新建一个事件类(被观察者)
可以建立多个监听类(观察者)
然后标记观察者和被观察者的关系,当被观察者变化时,通知观察者
场景
手机用户注册之后,发一份邮件到邮箱
用户删除账号后,发一个事情推送
使用
首先再 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); //逻辑处理
}
}
一个简单的事件就这么完工了~~~
网友评论