Laravel之事件Event
Posted 编程老头
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel之事件Event相关的知识,希望对你有一定的参考价值。
适用场景:记录文章浏览量
php artisan make:event 事件名
示例:
php artisan make:event MyEvent
Laravel目录\\app\\Events已经生成MyEvent.php文件
<?php namespace App\\Events; use App\\Events\\Event; use Illuminate\\Queue\\SerializesModels; use Illuminate\\Contracts\\Broadcasting\\ShouldBroadcast; class MyEvent extends Event { use SerializesModels; /** * Create a new event instance. * * @return void */ public function __construct() { // } /** * Get the channels the event should be broadcast on. * * @return array */ public function broadcastOn() { return []; } }
事件必须有监听者,我们先在\\app\\Providers目录下找到EventServiceProvider.php文件,该文件内有一个Events-Listeners数组来保存事件和监听者的映射关系。
protected $listen = [ \'App\\Events\\MyEvent\' => [ \'App\\Listeners\\MyListener1\', \'App\\Listeners\\MyListener2\' ] ];
这里,我们让一个事件有两个监听者,使用artisan控制台自动生成php文件
php artisan event:generate
Laravel\\app\\Listeners目录下已经生成了MyListener1.php和MyListener2.php
问题来了,我们怎么触发这个事件?
这里借用我们上一篇博客说的Console,来测试这个事件,如果你对Console不熟,可以看http://www.cnblogs.com/sweng/p/6358919.html
对Check类中修改handle()函数,使用Event::fire(new MyEvent())触发事件,实际上是传入一个Event对象
<?php namespace App\\Console\\Commands; use Illuminate\\Console\\Command; // use Illuminate\\Support\\Facades\\Event; use App\\Events\\MyEvent; class Check extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = \'check\'; /** * The console command description. * * @var string */ protected $description = \'Command description\'; /** * Create a new command instance. * * @return void */ public function __construct() { parent::__construct(); } /** * Execute the console command. * * @return mixed */ public function handle() { // echo \'checking...\'; Event::fire(new MyEvent()); } }
以上是关于Laravel之事件Event的主要内容,如果未能解决你的问题,请参考以下文章