常用命令
代码语言:javascript复制#显示系统注册的事件和监听器的列表
php artisan event:list
生成事件和监听器
一、 手动
生成单个事件和监听器
代码语言:javascript复制php artisan make:event PublishArticlesEvent
php artisan make:listener PublishArticlesListener --event=PublishArticlesEvent
代码语言:javascript复制2.手动注册注册事件和监听器
root@php-fpm:/var/www/laravel-demo# cat app/Providers/EventServiceProvider.php /**
系统中的事件和监听器的对应关系。
@var array */ protected $listen = [ PublishArticlesEvent::class => [ PublishArticlesListener::class, ], ];
代码语言:javascript复制
二、自动
生成 EventServiceProvider
中列出的、尚不存在的任何事件或侦听器
如下,PublishArticlesEvent
和PublishArticlesListener
是不存在的
root@php-fpm:/var/www/laravel-demo# cat app/Providers/EventServiceProvider.php
<?php
namespace AppProviders;
use AppEventsPublishArticlesEvent;
use AppListenersPublishArticlesListener;
class EventServiceProvider extends ServiceProvider
{
protected $listen = [
PublishArticlesEvent::class => [
PublishArticlesListener::class,
],
];
}
执行
代码语言:javascript复制php artisan event:generate
执行成功会自动创建app/Events/PublishArticlesEvent.php
和app/Listeners/PublishArticlesListener.php
然后再修改一下
代码语言:javascript复制vi app/Events/PublishArticlesEvent.php
class PublishArticlesEvent
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public Article $article;
public function __construct(Article $article)
{
$this->article=$article;
}
}
vi app/Listeners/PublishArticlesListener.php
class PublishArticlesListener
{
public function __construct()
{
//
}
public function handle(PublishArticlesEvent $event)
{
Log::info("article..");
Log::info($event->article);
}
调度事件
即触发事件,在web应用的控制器中,或控制台命令中都可以调用
代码语言:javascript复制$article=Article::query()->first();
//调度事件
PublishArticlesEvent::dispatch($article);