2.1 基本文件的文件的生成
//在app/Providers/EventServiceProvider 中的注册事件与监听间的映射关系
protected $listen = [
'App\Events\PostSaved' => [
'App\Listeners\SaveDataToCache',
],
];
//命令行执行
php artisan event::generate
//程序执行完成后,会在app/Events目录以及app/Listen目录下生成对应的映射文件
PostSaved.php 以及 SaveDataToCache.php
2.2文件生成完毕后,定义事件类
public function __construct(Post $Post)
{
$this->Post = $post;
}
2.3 定义监听器类
public function handle(PostSaved $event)
{
//
$post = $event->post;
Log::info("保存成功.id 为:".$post->id);
}
2.4 事件的触发
事件的触发,我们需要在代码中完成,比如我们可以在指定方法中添加
public function store(Request $request)
{
$title = $request->input('title');
$content = $request->input('content');
$post = new Post();
$post->title = $title;
$post->content = $content;
$post->save();
//注意 use Illuminate\Support\Facades\Event;
Event::fire(new PostSaved($post));
//或者使用event(new PostSaved($post));
return redirect()->route('post.show',['post'=>$post]);
}
最后,在我们访问store方法时,就会自动触发该事件了