W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
Laravel 的 event 功能提供一個簡單的觀察者實現(xiàn),允許你在應用程序里訂閱與監(jiān)聽事件。事件類通常被保存在 app/Events 目錄下,而它們的處理程序則被保存在 app/Handlers/Events 目錄下。
你可以使用 Artisan 命令行工具產(chǎn)生一個新的事件類:
php artisan make:event PodcastWasPurchased
Laravel 里的 EventServiceProvider 提供了一個方便的地方注冊所有的事件處理程序。listen 屬性包含一個所有的事件 (鍵) 和相對應的處理程序 (值) 的 數(shù)組。當然,你可以依應用程序的需求添加任何數(shù)量的事件到這個數(shù)組。舉個例子,讓我們來加上 PodcastWasPurchased 事件:
/**
* 應用程序的事件處理程序?qū)φ铡? *
* @var array
*/
protected $listen = [
'App\Events\PodcastWasPurchased' => [
'App\Handlers\Events\EmailPurchaseConfirmation',
],
];
使用 Artisan 命令行命令 handler:event,來產(chǎn)生一個事件的處理程序:
php artisan handler:event EmailPurchaseConfirmation --event=PodcastWasPurchased
當然,在每次你需要一個處理程序或是事件時,手動地執(zhí)行 make:event 和 handler:event 命令很麻煩。作為替代,簡單地添加處理程序跟事件到你的 EventServiceProvider 并使用 event:generate 命令。這個命令將會產(chǎn)生任何在你的 EventServiceProvider 列出的事件跟處理程序:
php artisan event:generate
現(xiàn)在我們準備好使用 Event facade 觸發(fā)我們的事件:
$response = Event::fire(new PodcastWasPurchased($podcast));
fire 方法返回一個響應的數(shù)組,讓你可以用來控制你的應用程序接下來要有什么反應。
你也可以使用 event 輔助方法來觸發(fā)事件:
event(new PodcastWasPurchased($podcast));
你甚至可以不需對事件建立對應的處理類。舉個例子,在你的 EventServiceProvider 的 boot 方法里,你可以做下面這件事:
Event::listen('App\Events\PodcastWasPurchased', function($event)
{
// 處理事件...
});
有時候你會希望停止繼續(xù)傳遞事件到其他監(jiān)聽器。你可以通過從處理程序返回 false 來做到這件事:
Event::listen('App\Events\PodcastWasPurchased', function($event)
{
// 處理事件...
return false;
});
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: