事件监听机制
事件监听的使用
注册事件监听
生成事件类和监听者类
配置监听对象及监听服务
在指定位置触发事件监听
事件监听机制
顾名思义,事件监听即监听事件的发生。当我们需要针对特定的事件进行特定的处理时,就需要绑定对应的处理方法。在我看来这和js添加点击事件是同一性质的。区别在于js添加点击事件是监听标签是否被点击。而在laravel中,是监听某一行为(注册,登录等)是否发生。
事件监听的使用
注册事件监听
首先,找到app\providers\EventServiceProvider.php文件,注册事件监听。以事件listernA为例,绑定监听者AListerner。
生成事件类和监听者类
事件监听注册后,cmd打开控制台。cd到项目根目录下,执行php artisan event:generate。执行成功后会自动生成app\Events\ListernA.php和app\Listerners\AListerner.php这两个文件。
配置监听对象及监听服务
首先,在事件ListernA的构造器中指定要监听的对象。
class listenA
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public function __construct(User $user)
{
$this->user = $user;
}
public function broadcastOn()
{
return new PrivateChannel('channel-name');
}
}
其次,针对监听对象执行监听服务
class AListerner
{
protected $session;
public function __construct(Store $session)
{
$this->session = $session;
}
public function handle(listenA $event)
{
$user= $event->user;
if($user->position==0){
$this->session->put("get",time());
$this->session->put("cancel",false);
}else{
$this->session->put("get",false);
$this->session->put("cancel",time());
}
}
}
在指定位置触发事件监听
在控制器中找到事件监听的逻辑位置,笔者将登录作为示例进行演示。
public function login($user){
//验证用户登录
if(checkUser($user)){
//触发事件监听
event(new listenA($user));
}
}
————————————————
版权声明:本文为CSDN博主「sileaf」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_53889778/article/details/111768033