Laravel 8 編寫事件訂閱者

2021-07-19 10:08 更新

事件訂閱者是可以在自身內(nèi)部訂閱多個(gè)事件的類,即能夠在單個(gè)類中定義多個(gè)事件處理器。訂閱者應(yīng)該定義一個(gè) subscribe 方法,這個(gè)方法接收一個(gè)事件分發(fā)器實(shí)例。你可以調(diào)用給定事件分發(fā)器上的 listen 方法來(lái)注冊(cè)事件監(jiān)聽器:

<?php

namespace App\Listeners;

class UserEventSubscriber
{
    /**
     * 處理用戶登錄事件
     */
    public function handleUserLogin($event) {}

    /**
     * 處理用戶注銷事件
     */
    public function handleUserLogout($event) {}

    /**
     * 為事件訂閱者注冊(cè)監(jiān)聽器
     *
     * @param  \Illuminate\Events\Dispatcher  $events
     * @return void
     */
    public function subscribe($events)
    {
        $events->listen(
            'Illuminate\Auth\Events\Login',
            [UserEventSubscriber::class, 'handleUserLogin']
        );

        $events->listen(
            'Illuminate\Auth\Events\Logout',
            [UserEventSubscriber::class, 'handleUserLogout']
        );
    }
} 

或者,你的訂閱者的 subscribe 方法可以將事件數(shù)組返回到處理程序映射。在這種情況下,事件監(jiān)聽器映射將自動(dòng)為你注冊(cè):

use Illuminate\Auth\Events\Login;
use Illuminate\Auth\Events\Logout;

/**
 * Register the listeners for the subscriber.
 *
 * @return array
 */
public function subscribe()
{
    return [
        Login::class => [UserEventSubscriber::class, 'handleUserLogin'],
        Logout::class => [UserEventSubscriber::class, 'handleUserLogout'],
    ];
} 
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)