lumen 事件
今天需要实现日志功能,所有使用了一下lumen的event(事件)和listener(监听)
Lumen事件:https://lumen.laravel-china.org/docs/5.3/events http://laravelacademy.org/post/3441.html
Laravel 的事件系统:https://d.laravel-china.org/docs/5.5/events
Laravel 5 事件的使用:https://www.cnblogs.com/chenqionghe/p/4884390.html
看完上面的文章基本就能实现了,下面做一些记录
我需要实现开门的日志写入
首先是OpenDoorEvent.php
<?php namespace App\Events; class OpenDoorEvent extends Event
{
/**
* Create a new event instance.
*
* @return void
*/
public $data; public function __construct($data)
{
$data['ip'] = $_SERVER["REMOTE_ADDR"];
$data['open_time'] = date('Y-m-d H:i:s', time());
$this->data = $data;
} public function getData()
{
return $this->data;
} }
然后实现OpenDoorListener.php
<?php namespace App\Listeners; use App\Events\OpenDoorEvent;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue; class OpenDoorListener
{ public $data; /**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
} /**
* Handle the event.
*
* @param ExampleEvent $event
* @return void
*/
public function handle(OpenDoorEvent $event)
{
$data = $event->getData();
$this->data = $data;
$this->run();
} public function run()
{
if (!$this->data) return;
var_dump($this->data);
/** ... */
} }
接下来是注册监听EventServiceProvider.php
<?php namespace App\Providers; use App\Events\OpenDoorEvent;
use App\Listeners\OpenDoorListener;
use Laravel\Lumen\Providers\EventServiceProvider as ServiceProvider; class EventServiceProvider extends ServiceProvider
{
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
'App\Events\SomeEvent' => [
'App\Listeners\EventListener',
],
/*
'App\Events\OpenDoorEvent' => [
'App\Listeners\OpenDoorListener',
],
*/
OpenDoorEvent::class => [
OpenDoorListener::class
],
];
}
最后随便找个控制器调用一下,在run方法把$data输出
$data = [
'user_id' => 1,
'room_id' => 1,
'key' => '123456',
'status' => 1
];
event(new OpenDoorEvent($data));exit();
结果
array(6) {
["user_id"]=>
int(1)
["room_id"]=>
int(1)
["key"]=>
string(6) "123456"
["status"]=>
int(1)
["ip"]=>
string(9) "127.0.0.1"
["open_time"]=>
string(19) "2018-01-30 15:46:24"
}
有问题欢迎留言!
lumen 事件的更多相关文章
- lumen
HTTP路由 基本路由 路由参数 必填参数 可选参数 正则表达式约束 命名路由 路由组 中间件 命令空间 路由前缀 基本路由 你可以在 route/web.php 文件中定义应用程序的全部路由.最基本 ...
- JNI详解---从不懂到理解
转载:https://blog.csdn.net/hui12581/article/details/44832651 Chap1:JNI完全手册... 3 Chap2:JNI-百度百科... 11 C ...
- Lumen 使用事件需要注意的事项
Lumen 版本 5.2 参考手册 laravel event 需要注意的事项 如果是第一次在lumen下使用事件,需要修改bootstrap\app.php文件 添加对EventServicePro ...
- 简单易懂的laravel事件,这个功能非常的有用(监听事件,订阅者模式)
先说一下在什么场景会使用这个事件功能. 事情大概是这样的,需求要在用户注册的时候发一些帮助邮件给用户(原本用户在注册之后已经有发别的邮件的了,短信,IM什么的) 原来这个注册的方法也就10多行代码.但 ...
- Lumen开发:结合Redis实现消息队列(3)
4.运行队列监听器 开启任务监听器 Lumen包含了一个Artisan命令用来运行推送到队列的新任务.你可以使用queue:listen命令运行监听器: php artisan queue:liste ...
- LaravelS - 基于Swoole加速Laravel/Lumen
LaravelS LaravelS是一个胶水项目,用于快速集成Swoole到Laravel或Lumen,然后赋予它们更好的性能.更多可能性.Github 特性 内置Http/WebSocket服务器 ...
- Jquery的点击事件,三句代码完成全选事件
先来看一下Js和Jquery的点击事件 举两个简单的例子 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&q ...
- 关于 Chrome 浏览器中 onresize 事件的 Bug
我在写插件时用到了 onresize 事件,在反复地测试后发现该事件在 Chrome 及 Opera(内核基本与 Chrome 相同,以下统称 Chrome)浏览器打开时就会执行,这种情况也许不能算作 ...
- MVVM设计模式和WPF中的实现(四)事件绑定
MVVM设计模式和在WPF中的实现(四) 事件绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...
随机推荐
- http://blog.csdn.net/huang_xw/article/details/7090173
http://blog.csdn.net/huang_xw/article/details/7090173
- SpringMVC中使用CommonsMultipartResolver进行文件上传
概述: CommonsMultipartResolver是基于Apache的Commons FileUpload来实现文件上传功能的.所以在项目中需要相应的jar文件. FileUpload版本要求1 ...
- 用C++实现文件压缩(1.5)
今天主要做的就是,将完成huffman编码的数据以二进制的形式写入文件中.这是个挺苦逼的活. 不过好在我以前玩过一段时间的单片机,所有能够较好的实现位运算,一位一位的将数据存放到缓冲区中,然后统一写入 ...
- bootstrap popover 如何在hover状态移动到弹出上不消失
bootstrap中的popover其实就是对tooltip做了一定升级,拥有了标题和内容 概要 使用的时候依赖第三方插件 依赖tooltip插件 必须初始化 title 和 content 可以在p ...
- django dispatch
from django.views import View # 这里Home需要继承View class Home(View): # 这样这里就相当于一个装饰器的功能,可以自己定制化内容 def di ...
- 解决apt-get的E: Could not get lock /var/lib/dpkg/lock方法
使用apt-get进行软件的install或update时,有时会出现以下提示信息: E: Could not get lock /var/lib/dpkg/lock - open (11 Resou ...
- ps -ef/ps -aux 查看正在活动的进程
ps -ef 查看正在活动的进程 ps -ef |grep abc 查看含有"abc"的活动进程 ps -ef |grep -v abc 查看不含abc的活动进程 1)ps a 显 ...
- lucene 多索引目录搜索实现方法
http://akululu.iteye.com/blog/314130 多索引目录就是要在多个索引目录的中进行比较搜索,类似概念在SQL中就是select * from TableA union s ...
- es redis logstash 日志收集系统排错
用logstash收集日志并发送到redis,然后通过logstash取redis数据写入到es集群,最近kibana显示日志总是中断,日志收集不过来,客户端重启发现报错: Failed to sen ...
- TCP通过哪些措施,保证传输可靠
TCP是通过什么方式来提供可靠传输的 (合理截断数据包,超时重发,校验,失序重新排序,能够丢弃重复数据,TCP可以进行流量控制) TCP提供一种面向连接的.可靠的字节流服务. 面向连接:意味着两个使 ...