1.在事件里面定义事件
<?php
/**
* Created by PhpStorm.
* User: maxwelldu
* Date: 2018/2/8
* Time: 上午12:17
*/
namespace App\Events;
use Illuminate\Queue\SerializesModels;
use Log;
use rekoon\common\models\Test;
class TestEvent extends Event
{
use SerializesModels;
public $test;
public function __construct(Test $test)
{
Log::info('init Test Event' . json_encode($test));
$this->test = $test;
}
/**
* Get the channels the event should be broadcast on.
*
* @return array
*/
public function broadcastOn()
{
return [];
}
}
2.在监听里面添加监听器
<?php
/**
* Created by PhpStorm.
* User: maxwelldu
* Date: 2018/2/8
* Time: 上午12:18
*/
namespace App\Listeners;
use Log;
use App\Events\TestEvent;
class TestListener
{
public function __construct()
{
}
public function handle(TestEvent $event) {
Log::info('deal Test with : ' . $event->test);
}
}
3.在服务提供者里面添加事件对应监听器的对应关系
<?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\SomeEvent' => [
'App\Listeners\EventListener'
],
'App\Events\TestEvent' => [
'App\Listeners\TestListener'
]
];
// protected $subscribe = [
// 'App\Listeners\TestListener'
// ];
}
4.在控制器里面触发事件
/**
* 创建一个测试对象
* @param Request $request
* @return \Illuminate\Http\JsonResponse
*/
public function createTest(Request $request)
{
/**
* 数据验证
*/
$this->validate($request, [
'name' => 'required',
]);
// 添加数据
$car = Test::create($request->all());
if (!is_null($car)) {
$test = new Test();
$test->name = 'maxwelldu';
Log::info('start send test event');
// event(new TestEvent($test));
Event::fire(new TestEvent($test));
// Event::fire(new TestEvent($test));
}
return response()->json($car);
}
5.在bootstrap/app.php中启动事件服务提供者
$app->register(App\Providers\EventServiceProvider::class);
6.触发这个控制器的方法,在postman里面请求
7.查看storage/logs/lumen.log里面是否有打印的日志信息
相关推荐
lumen框架,非常适合用来写api,是提供微服务常用的技术
lumen-passport, 使用Lumen制作 Laravel 护照 lumen护照 使用Lumen制作 Laravel 护照一个简单的服务提供者,使 Laravel Passport与依赖项PHP> = 5.6.3流明> = 5.3通过Composer安
Laravel开发-lumen-annotations Laravel管腔的路由和事件绑定注释
Laravel/Lumen 使用 Redis队列
Lumen登录实例代码,亲测可用。
Laravel开发-lumen-notification Laravel通知的包装器,适用于Lumen 5.x
Laravel开发-lumen-auth-acl Laravel Lumen框架的acl身份验证。
lumen 的框架资源,composer_lumen替换源文件中的composer.json
Laravel开发-pdf-lumen-bundle Laravel Lumen的K98kurz/pdf(dompdf包装)兼容叉
Laravel开发-lumen-transformer 用于流明和Laravel的数据转换器
Laravel开发-lumen-cors 用于Lumen微框架的跨源站资源共享(CORS)中间件。
Laravel开发-lumen-helpers 以支持Laravel在内腔中不支持的功能。
Laravel开发-pdf-lumen Laravel Lumen的K98kurz/pdf(dompdf包装)兼容叉
Laravel开发-lumen-config-cache 将laravel命令'php artisan config:cache'添加到lumen
Laravel开发-lumen-generators 一组用于流明和Laravel 5的发生器。
Laravel开发-lumen 使用StormPath和Laravel构建简单、安全的Web应用程序!
Lumen Programming Guide Writing PHP Microservices REST and Web Service APIs 英文epub
Laravel开发-lumen-starter 管腔启动器框架。
Laravel开发-lumen-framework Laravel管腔框架。