W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
你可以啟用自動事件發(fā)現(xiàn),而不是在 EventServiceProvider
的 $listen
數(shù)組中手動的注冊事件和監(jiān)聽器。事件發(fā)現(xiàn)啟用后,Laravel 會通過掃描你應(yīng)用的 Listeners
目錄來自動的查找和注冊事件和監(jiān)聽器。此外,EventServiceProvider
中列出的任何明確定義的事件仍將被注冊。
Laravel 通過使用反射掃描監(jiān)聽器類來查找事件監(jiān)聽器。 當 Laravel 找到以 handle
開頭的監(jiān)聽器類方法時,Laravel 會將這些方法注冊為方法簽名中類型提示的事件的事件監(jiān)聽器:
use App\Events\PodcastProcessed;
class SendPodcastProcessedNotification
{
/**
* 處理給定的事件。
*
* @param \App\Events\PodcastProcessed
* @return void
*/
public function handle(PodcastProcessed $event)
{
//
}
}
事件發(fā)現(xiàn)默認情況下是禁用的,但你可以通過覆蓋應(yīng)用程序的 EventServiceProvider
的 shouldDiscoverEvents
方法來啟用它:
/**
* 確定是否應(yīng)自動發(fā)現(xiàn)事件和偵聽器
*
* @return bool
*/
public function shouldDiscoverEvents()
{
return true;
}
默認情況下,在應(yīng)用程序的 Listeners
目錄中的所有監(jiān)聽器將被掃描。如果你想要定義掃描其他目錄,可以覆蓋 EventServiceProvider
中的 discoverEventsWithin
方法:
/**
* 獲取應(yīng)該用于發(fā)現(xiàn)事件的監(jiān)聽器的目錄
*
* @return array
*/
protected function discoverEventsWithin()
{
return [
$this->app->path('Listeners'),
];
}
在生產(chǎn)環(huán)境中,你可能不希望框架在每個請求上掃描所有監(jiān)聽器。 因此,在部署過程中,你應(yīng)該運行 event:cache
Artisan 命令來緩存應(yīng)用程序的所有事件和監(jiān)聽器的列表。 框架將使用此列表來加速事件注冊過程。event:clear
命令則可用于銷毀緩存。
技巧:
event:list
命令可用于顯示應(yīng)用程序注冊的所有事件和監(jiān)聽器的列表。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: