日常项目中,需要记录一些操作记录,用以数据分析及安全防护,需要在项目中用到事件监听,以便我们更好的完成开发工作(好记性不如烂笔头)
author:he
qq:760863706
laravel:laravel 5.1.*
date:2018-08-20
创建事件监听首先在App\Providers\EventServiceProvider中注册事件与监听的关系
protected $listen = [
//
'App\Events\LoginInfo' => [
'App\Listeners\LoginInfoRecord',
],
];
然后在项目的根目录执行命令
php artisan event:generate
执行成功后,生成 事件类App\Events\LoginInfo.php 和 监听类App\Listeners\LoginInfoRecord.php
定义事件类:
public $data;
public function __construct($data)
{
//
$this->data = $data;
}
定义监听类:
public function handle(LoginInfo $event)
{
//
$data = $event->data;
//测试数据写入根目录test.txt文件中
file_put_contents("../test.txt", json_encode($data).PHP_EOL,FILE_APPEND);
}
添加事件触发:
根据需要,在业务控制器的类中引入 App\Events\LoginInfo,在对应的方法login()中添加触发条件
use App\Events\LoginInfo;
public function login()
{
//登录逻辑
$data = [
'account' =>'158xxxx6666',
'login_time' => date('Y-m-d H:i:s', time()),
];
event(new LoginInfo($data)); //事件触发
}
到这里就完成了事件监听的全部过程,我们在根目录test.txt文件中发现所写入的记录信息,可以用来做后续分析
{"account":"158xxxx6666","login_time":"2018-08-20 15:50:56"}
{"account":"158xxxx6666","login_time":"2018-08-20 15:57:35"}
{"account":"158xxxx6666","login_time":"2018-08-20 15:57:36"}