适用场景:记录文章浏览量php
php artisan make:event 事件名
示例:html
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数组来保存事件和监听者的映射关系。bash
protected $listen = [ 'App\Events\MyEvent' => [ 'App\Listeners\MyListener1', 'App\Listeners\MyListener2' ] ];
这里,咱们让一个事件有两个监听者,使用artisan控制台自动生成php文件app
php artisan event:generate
Laravel\app\Listeners目录下已经生成了MyListener1.php和MyListener2.phpide
问题来了,咱们怎么触发这个事件?函数
这里借用咱们上一篇博客说的Console,来测试这个事件,若是你对Console不熟,能够看http://www.cnblogs.com/sweng/p/6358919.html测试
对Check类中修改handle()函数,使用Event::fire(new MyEvent())触发事件,其实是传入一个Event对象spa
<?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()); } }