在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加入群聊,欢迎一起研究技术
转载请注明:laravel使用event事件 出自老鄢博客 | 欢迎分享