0
点赞
收藏
分享

微信扫一扫

Laravel - Events

跟着Damon写代码 2023-03-13 阅读 89

事件原理:通过观察者模式,实现的事件订阅,事件的监听。

事件目录:/app/Events

监听目录:/app/Listeners

创建事件与监听

创建一对事件和它的监听器:

php artisan make:event MyEvent
php artisan make:listener MyListener --event=MyEvent

生成两个文件:

/app/Events/MyEvent.php

<?php
namespace App\Events;
use ...

class MyEvent{
use Dispatchable, InteractsWithSockets, SerializesModels;
public function broadcastOn(){
return new PrivateChannel('channel-name');
}
}

/app/Lisnteners/MyListener.php

<?php
namespace App\Listeners;
use ...

class MyListener{
//当事件发生时,该监听器执行的方法,返回 false 将中断事件传递
public function handle(MyEvent $event){

}
}

注册事件与监听

/app/Providers/EventServiceProvider.php  用来注册事件与监听器

<?php
namespace App\Providers;
use ...

class EventServiceProvider extends ServiceProvider{
//方式一:注册事件监听的映射,格式:['事件'=>['监听1','监听2']],
protected $listen = [
Registered::class => [
SendEmailVerificationNotification::class,
],
MyEvent::class => [MyListener::class],
];

//也可以在这里注册
public function boot(){
//方式二
Event::listen(MyEvent::class, [MyListener::class, 'handle']);

//方式三:闭包监听
Event::listen(function (PodcastProcessed $event) {
//
});

//方式四:通配监听
Event::listen('event.*', function ($eventName, array $data) {
//
});
}

//是否自动发现事件和监听器,这样注册的监听器,通过参数类型来判断要监听的事件
public function shouldDiscoverEvents(){
return false;
}
}





举报

相关推荐

0 条评论