event

1.定义事件类

事件(Event):代表应用程序中特定的动作或状态变化,是一种信号机制。

# 创建事件类 app/event下文件
php artisan make:event ActivityPackageEvent
<?php
namespace App\Events;
class ActivityPackageEvent
{
    public function __construct( $args)
    {
        $this->activity = $args[0];
        $this->order    = $args[1];
        $this->package  = $args[2];
    }
}

2.定义监听类

监听器(Listener):负责处理事件的代码逻辑单元。当特定事件被触发时,与之关联的监听器会执行相应的操作。

# 创建监听器类并关联到指定事件
php artisan make:listener ActivityPackageListener --event=ActivityPackageEvent
<?php
use Illuminate\Contracts\Queue\ShouldQueue;

class ActivityPackageListener implements ShouldQueue
{
    public function handle($event)
    {
        \Log::error('异步操作');
        $package    = $event->package;
        $order      = $event->order;
        $activity   = $event->activity;
        //逻辑处理
    }
}

3.注册时间和监听器

<?php
namespace App\Providers;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
class EventServiceProvider extends ServiceProvider
{
    protected $listen = [
        'Modules\Activity\Events\ActivityPackageEvent' => [
            'Modules\Activity\Listeners\ActivityPackageListener',
        ],
    ];
    public function boot()
    {
        parent::boot();
    }
}

4. 触发事件

在应用程序的任意位置,你都可以使用 event 辅助函数来触发事件

event(new \Modules\Activity\Events\ActivityPackageEvent([$activity, $order, $package]));

不继承 ShouldQueue 接口:同步执行

继承 ShouldQueue 接口:异步执行。将任务推送至队列执行。

php artisan queue:work

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值