适用场景:记录文章浏览量
| 1 | php artisan make:event 事件名 | 
示例:
| 1 | php artisan make:event MyEvent | 
Laravel目录\app\Events已经生成MyEvent.php文件
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
 | 
<?phpnamespace 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数组来保存事件和监听者的映射关系。
| 
 1 
2 
3 
4 
5 
6 
 | 
protected $listen = [    ‘App\Events\MyEvent‘ => [        ‘App\Listeners\MyListener1‘,        ‘App\Listeners\MyListener2‘    ]]; | 
这里,我们让一个事件有两个监听者,使用artisan控制台自动生成php文件
| 1 | 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对象
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
43 
44 
45 
46 
47 
48 
 | 
<?phpnamespace 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());    }} | 
原文:http://www.cnblogs.com/wuyuxin/p/7039665.html