欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Laravel事件Event

发布时间:2024/4/17 编程问答 49 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Laravel事件Event 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

适用场景:记录文章浏览量

php artisan make:event 事件名

示例:

php artisan make:event MyEvent

Laravel目录\app\Events已经生成MyEvent.php文件

<?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数组来保存事件和监听者的映射关系。

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对象

<?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());} }

  

转载于:https://www.cnblogs.com/sweng/p/6358961.html

与50位技术专家面对面20年技术见证,附赠技术全景图

总结

以上是生活随笔为你收集整理的Laravel事件Event的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。