国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

laravel中事件以及觀(guān)察者的示例分析

發(fā)布時(shí)間:2021-09-04 11:55 來(lái)源:億速云 閱讀:0 作者:小新 欄目: 開(kāi)發(fā)技術(shù)

這篇文章給大家分享的是有關(guān)laravel中事件以及觀(guān)察者的示例分析的內容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

一:事件與監聽(tīng)器

事件是一個(gè)比較廣泛的的名詞,他可以代表所做的一個(gè)動(dòng)作。和事件一起出現的就是監聽(tīng)器了,其作用是用來(lái)監聽(tīng)你所做的事情,用來(lái)對你的行為做后續處理。
事件系統為應用各個(gè)方面的解耦提供了非常棒的方法,因為單個(gè)事件可以擁有多個(gè)互不依賴(lài)的監聽(tīng)器。例如,你可能希望每次訂單發(fā)貨時(shí)向用戶(hù)發(fā)送一個(gè)通知。你可以編寫(xiě)一個(gè)可以被監聽(tīng)的事件,而不是將訂單處理代碼通知代碼耦合在一起。

事件:
Laravel 框架想要創(chuàng )建事件可以通過(guò)以下命令來(lái)創(chuàng )建:

php artisan make:event 事件名稱(chēng)

該文件會(huì )存放在 app/Events 目錄下面。

監聽(tīng)器:

創(chuàng )建監聽(tīng)器可以使用以下命令來(lái)創(chuàng )建:

php artisan make:listener 監聽(tīng)器名稱(chēng)

注冊:

事件和監聽(tīng)器在創(chuàng )建完畢后,還需要將二者聯(lián)合起來(lái)。我們可以在 EventServiceProvider 服務(wù)提供者中進(jìn)行注冊。如下:

    protected $listen = [
        事件名稱(chēng) => [
            監聽(tīng)器名稱(chēng),
         .
        ],
    ];

分發(fā)

event(new TestEvent());

二:模型事件

模型事件是專(zhuān)門(mén)針對模型而額外添加的功能。其給我們創(chuàng )建了對應的事件與監聽(tīng)。在使用模型事件事,我們需要遵守模型給我們的規則:

  • retrieved:    獲取到模型實(shí)例后觸發(fā)

  • creating:     插入到數據前觸發(fā)

  • created:      插入到數據庫后觸發(fā)

  • updating: 更新到數據庫前觸發(fā)

  • updated:      更新到數據庫后觸發(fā)

  • saving:       保存到數據庫前觸發(fā)(插入/更新之前,無(wú)論插入還是更新都會(huì )觸發(fā))

  • saved:        保存到數據庫后觸發(fā)(插入/更新之后,無(wú)論插入還是更新都會(huì )觸發(fā))

  • deleting:     從數據庫刪除記錄前觸發(fā)

  • deleted:      從數據庫刪除記錄后觸發(fā)

  • restoring:    恢復軟刪除記錄前觸發(fā)

  • restored:     恢復軟刪除記錄后觸發(fā)

需要在模型處綁定

protected $dispatchesEvents = [
        'saving' => \App\Events\TestEvent::class,
//        'updated' => \App\Events\TestEvent::class,
];

三:觀(guān)察者

事件需要與監聽(tīng)器關(guān)聯(lián)來(lái),當監聽(tīng)器變多了我們還需進(jìn)行注冊實(shí)現,這樣會(huì )比較麻煩,這時(shí)我們可以考慮使用觀(guān)察者。如果在一個(gè)模型上監聽(tīng)了多個(gè)事件,可以使用觀(guān)察者來(lái)將這些監聽(tīng)器組織到一個(gè)單獨的類(lèi)中。

觀(guān)察者使用:

觀(guān)察者的創(chuàng )建可以使用以下命令來(lái)創(chuàng )建:

php artisan make:observer

如果想要直接跟模型關(guān)聯(lián)起來(lái),還可以直接加入參數與模型關(guān)聯(lián):

php artisan make:observer UserObserver --model=User

觀(guān)察者注冊:
在服務(wù)提供者中注冊

User::observe(UserObserver::class);

或在模型中注冊

public static function booted()
{
     self::observe(UserObserver::class);
}

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。

精品久久人人爽天天玩人人妻| 日日碰狠狠添天天爽五月婷| 亚洲中文字幕无码一区日日添| 亚洲香蕉免费有线视频| 青草草在线视频免费观看| 人妻在线日韩免费视频|