1.介绍
事件是一种常见的观察者模式的应用。简单的来说,就是当… 干…。这个当… 和干… 在 Laravel 事件中分别对应:当 (event)… 干 (listener)…
2.事件注册
#app\Providers\EventServiceProvider.php
protected $listen = [
Registered::class => [
SendEmailVerificationNotification::class,
],
'App\Events\LoginEvent' => [ //用户登录
'App\Listeners\LoginListener',
],
'App\Events\LogoutEvent' => [ //用户登出
'App\Listeners\LogoutListener',
]
];
3.命令生成文件
#生成 LoginEvent
php artisan make:event LoginEvent
#生成 LogoutEvent
php artisan make:event LogoutEvent
#生成 App\Listeners\XXX.php
php artisan event:generate
4.控制器调用
#控制器
event(new LoginEvent());
#App/Listeners/LoginListener.php
public function handle(LoginEvent $event)
{
$insert = [];
$insert['username'] = 'login' . time();
$insert['password'] = time();
$insert['updated_at'] = date('Y-m-d H:i:s');
$insert['created_at'] = date('Y-m-d H:i:s');
Uinfo::create($insert);
}
5.传递参数
#控制器
$insert = [
'username' => time() . rand(1, 500),
'password' => '123456'
];
event(new LoginEvent($insert));
#App\Events\LoginEvent.php
#App/Listeners/LoginListener.php
public function handle(LoginEvent $event)
{
$insert = $event->data;
$insert['updated_at'] = date('Y-m-d H:i:s');
$insert['created_at'] = date('Y-m-d H:i:s');
Uinfo::create($insert);
}