1.1.1. 事件

创建一个事件

php artisan make:event <event_name>

创建后,会得到 app/Events/.php 文件。事件本身不需要什么逻辑。

use App\Models\Order;
.
.
.
class OrderPaid
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    protected $order;

    public function __construct(Order $order)
    {
        $this->order = $order;
    }

    public function getOrder()
    {
        return $this->order;
    }
}

然后创建监听者:

php artisan make:listener <listener_name> --event=<event_name>

会得到一个 app/Listeners/.php

<?php

namespace App\Listeners;

use App\Events\OrderPaid;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use App\Models\OrderItem;
//  implements ShouldQueue 代表此监听器是异步执行的
class UpdateProductSoldCount implements ShouldQueue
{
    // Laravel 会默认执行监听器的 handle 方法,触发的事件会作为 handle 方法的参数
    public function handle(OrderPaid $event)
    {
        // 逻辑
    }
}

当有了事件和监听者之后,还需要将两者关联起来。 在 app/Providers/EventServiceProvider.php 文件中。

use App\Events\OrderPaid;
use App\Listeners\UpdateProductSoldCount;
.
.
.
    protected $listen = [
        .
        .
        .
        OrderPaid::class => [
            UpdateProductSoldCount::class,
        ],
    ];
Copyright © Kagami丶 2019 all right reserved,powered by Gitbook该文件修订时间: 2019-10-20 21:32:30

results matching ""

    No results matching ""