laravel 事件處理
事件提供了一個簡單的觀察者實現(xiàn),它允許用戶訂閱和監(jiān)聽web應用程序中觸發(fā)的各種事件。laravel中的所有事件類都存儲在 app / events 文件夾中,而偵聽器存儲在 app / listeners 文件夾中。
下面顯示了在您的web應用程序中生成事件和偵聽器的工匠命令 -
php artisan event:generate
如上所述,該命令將生成事件和偵聽器到相應的文件夾。
事件和監(jiān)聽器為分離web應用程序提供了一種很好的方式,因為一個事件可以有多個相互獨立的監(jiān)聽器。由artisan命令創(chuàng)建的events文件夾包括以下兩個文件:event.php和someevent.php。他們在這里顯示
event.php
namespace app\events; abstract class event{ // }</pre-->如上所述, <strong>event.php</strong> 包含類 <strong>event</strong> 的基本定義,并調(diào)用名稱空間 <strong>app \ events</strong> 。請注意,用戶定義或自定義事件是在此文件中創(chuàng)建的。
<h3>someevent.php</h3>namespace app\events; use app\events\event; use illuminate\queue\serializesmodels; use illuminate\contracts\broadcasting\shouldbroadcast; class someevent extends event{ use serializesmodels; /** * create a new event instance. * * @return void */ public function __construct(){ // } /** * get the channels the event should be broadcast on. * * @return array */ public function broadcaston(){ return []; } }</pre-->請注意,此文件使用序列化來在web應用程序中廣播事件,并且此文件中還初始化了必要的參數(shù)。
例如,如果我們需要在構(gòu)造函數(shù)中初始化順序變量以注冊一個事件,我們可以通過以下方式來完成 -
public function __construct(order $order){ $this->order = $order; }<h3>聽眾</h3>聽眾處理正在注冊的事件中提到的所有活動。工匠命令 <strong>事件:生成</strong> 創(chuàng)建所有 <strong>聽眾</strong> 的 <strong>應用程序/聽眾</strong> 目錄。listeners文件夾包含一個文件 <strong>eventlistener.php</strong> ,它具有處理偵聽器所需的所有方法。
<h3>eventlistener.php</h3>namespace app\listeners; use app\events\someevent; use illuminate\queue\interactswithqueue; use illuminate\contracts\queue\shouldqueue; class eventlistener{ /** * create the event listener. * * @return void */ public function __construct(){ // } /** * handle the event. * * @param someevent $event * @return void */ public function handle(someevent $event){ // } }</pre-->如代碼所述,它包含用于管理各種事件的 <strong>句柄</strong> 函數(shù)。我們可以創(chuàng)建針對單個事件的各種獨立偵聽器。
<h3><a href="/s7900103/laravel facades.html">下一節(jié):laravel facades</a></h3> <h3><a href="/php/php_sz/180.html" target="_blank">laravel 教程</a></h3>