laravel事件

190 阅读1分钟

1:注册事件和监听器
打开 App\Providers\EventServiceProvider文件,在$listen数组中注册事件和监听器

protected $listen = [

'App\Events\TestEvent' => [
    'App\Listeners\TestListener1',
    'App\Listeners\TestListener2'
]

];
执行自动生成文件命令 php artisan event:generate
执行成功后会生成 事件文件和监听器文件
事件文件: App\Events\TestEvent.php
监听器文件: App\Listeners\TestListener1.php

事件文件
namespace App\Events;

class TestEvent {

public $params;

public function __construct($params)
{
    // 获取分发事件时传递的参数
    $this->params = $params;
}

}

监听器文件
namespace App\Listeners;

class TestListener1 {

/**
 * Create the event listener.
 *
 * @return void
 */
public function __construct()
{
    //
}

/**
 * Handle the event.
 * 会自动执行本方法
 * @param  TestEvent  $event
 * @return void
 */
public function handle(TestEvent $event)
{
    // 可通过注册的$event属性获取事件传递的参数
    // 在此处编写业务代码
    dump($event);
}

}

分发事件, 可在控制器方法或者路由中

/**
 * 测试事件
 */
public function event(){
    // 分发事件
    event(new TestEvent(['name' => '张三', 'age' => 18]));
    return 'event';
}

手动创建 事件文件 命令
php artisan  make:event TestEvent2

手动创建监听器文件
php artisan make:listener  TestListener3

手动创建文件成功后需在  App\Providers\EventServiceProvider文件的 $listen数组中注册事件监听