laravel使用event事件

发布时间:2020-11-12 19:57:08 阅读:1556次

laravel中使用event事件

首先什么是事件,事件是一种常见的观察者模式的应用。

简单的来说,就是当什么什么的时候就干什么。

当 (event),干 (listener)放置 event 和 listener 文件的位置分别是:

app/Events

app/Listeners

对于产品经理来说,事件主要用来规范你的业务逻辑,使支线逻辑与主线逻辑独立分拆。对于程序员来说,事件可以让 Controller 变得非常简洁,解耦,可维护。

如何使用?

首先 php artisan make:event UserSignup

然后在App\Providers\EventServiceProvider.php中编辑

protected $listen = [
Registered::class => [
SendEmailVerificationNotification::class,
],
\App\Events\UserSignUp::class => [
App\Listeners\UserSignupListener::class
],
];

接着执行php artisan event:generate

这时会在AppEvents和AppListeners中生成两个文件

分别为UserSignup.php

<?php namespace App\Events;
use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use App\User;
class UserSignUp
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $user;
public function __construct(User $user)
{
$this->user = $user;
}
public function broadcastOn()
{
return new PrivateChannel('channel-name');
}
}

UserSignupListener.php

<?php namespace App\Listeners;
use App\Events\UserSignUp;
use IlluminateQueue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
class UserSignupListener
{
public function __construct()
{
}
public function handle(UserSignUp $event)
{
dump($event->user->email.' sign up');
}
}

接着在route中调用即可

Route::get('/signup/{id}', function($id){
$user = \\App\\User::find($id);
event(new \App\Events\UserSignUp($user));
});

如有问题,可以QQ搜索群1028468525加入群聊,欢迎一起研究技术

支付宝 微信

有疑问联系站长,请联系QQ:QQ咨询

转载请注明:laravel使用event事件 出自老鄢博客 | 欢迎分享