首頁 > php框架 > Laravel > 主體

解析Laravel事件系統的運作原理

藏色散人
發布: 2021-12-29 14:46:06
轉載
2101 人瀏覽過

以下由Laravel教學專欄為大家介紹關於Laravel事件系統的運作原理,希望對大家有幫助!

在EventServiceProvider 裡註冊(app/Providers/EventServiceProvider.php)

protected $listen = [
        Registered::class => [
            SendEmailVerificationNotification::class,
        ],
        'App\Events\Test' => [
            'App\Listeners\EventListener',
        ],
    ];
登入後複製

使用命令列來產生事件與監聽器

$ php artisan event:generate
登入後複製

此時將產生兩個檔案

1、App/Events/Test.php(事件)

編輯事件

<?php

namespace App\Events;use App\Models\User;use Illuminate\Broadcasting\Channel;use Illuminate\Broadcasting\InteractsWithSockets;use Illuminate\Broadcasting\PresenceChannel;use Illuminate\Broadcasting\PrivateChannel;use Illuminate\Contracts\Broadcasting\ShouldBroadcast;use Illuminate\Foundation\Events\Dispatchable;use Illuminate\Queue\SerializesModels;class Test{
  use Dispatchable, InteractsWithSockets, SerializesModels;

  /**
 * Create a new event instance. * * @return void
 */  public function __construct($id)
 {  
     echo &#39;触发事件成功!---------&#39;.$id;
     $this->id = $id;
  }

  /**
 * Get the channels the event should broadcast on. * * @return \Illuminate\Broadcasting\Channel|array
 */  public function broadcastOn()
 {  return new PrivateChannel('channel-name');
  }}
登入後複製

2、app/Listeners/EmailVerified.php(監聽器)

編輯監聽器

<?php

namespace App\Listeners;
use App\Events\Test;use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
class EventListener{
  /**
 * Create the event listener. * * @return void
 */  public function __construct()
 {  //
  }

  public function handle(Test $event)
 {  
     echo &#39;监听成功!监听值:&#39;.$event->id;
 }}
登入後複製

在控制器中觸發事件

public function test1(){
 event(new Test('11111111'));
 return '测试事件系统';}
登入後複製

常用指令

php artisan event:generate
php artisan make:event UserRegisteredEvent
php artisan make:listener SendMailListener --event="UserRegisteredEvent"
登入後複製

相關推薦:最新的五個Laravel影片教學

以上是解析Laravel事件系統的運作原理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:learnku.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板