前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Laravel 事件

Laravel 事件

作者头像
崔哥
发布2023-03-24 15:14:41
7590
发布2023-03-24 15:14:41
举报
文章被收录于专栏:崔哥的专栏崔哥的专栏

常用命令

代码语言: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 中列出的、尚不存在的任何事件或侦听器

如下,PublishArticlesEventPublishArticlesListener是不存在的

代码语言:javascript
复制
root@php-fpm:/var/www/laravel-demo# cat app/Providers/EventServiceProvider.php 

<?php
namespace App\Providers;

use App\Events\PublishArticlesEvent;
use App\Listeners\PublishArticlesListener;

class EventServiceProvider extends ServiceProvider
{
    protected $listen = [
        PublishArticlesEvent::class => [
            PublishArticlesListener::class,
        ],
    ];
}

执行

代码语言:javascript
复制
php artisan event:generate

执行成功会自动创建app/Events/PublishArticlesEvent.phpapp/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);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 常用命令
  • 生成事件和监听器
    • 一、 手动
      • 二、自动
      • 调度事件
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档