首頁 > 後端開發 > php教程 > Laravel 觀察者:應用程式生命週期中的沉默忍者

Laravel 觀察者:應用程式生命週期中的沉默忍者

Linda Hamilton
發布: 2024-11-08 02:00:02
原創
671 人瀏覽過

Laravel Observers: The Silent Ninjas of Your Application Lifecycle

簡介

想像一下,每當您在網站上提交表單時,一個隱形助理就會進來並再次檢查所有內容。添加更多詳細信息,甚至無需您費力即可發送一封歡迎信。 Laravel 觀察者就像默默工作的幕後助手。而且它的功能強大,可以在您需要時處理所有任務。在這篇文章中,我們將深入探討觀察者在 Laravel 中的工作方式,以及為什麼它們是應用程式在模型事件處理中的沉默忍者。以及如何在現實世界的例子中充分利用這些事件。

什麼是 Laravel 觀察者?

Laravel 觀察者是偵聽器類,可透過觀察特定事件(例如建立、更新或刪除)來協助管理模型的生命週期。觀察者可以為每個事件定義操作。保持您的控制器和模型乾淨且專注。觀察者在您的應用程式中充當“事件專家”。觀察者將處理改進程式碼庫所需的後端工作。透過事件驅動的工作分離來提高組織和效率。觀察者有助於建立更模組化和可維護的應用程式結構。

為什麼要使用觀察者?

1。更乾淨的控制器和模型:觀察者處理重複的動作,讓您的控制器和模型專注於他們的主要工作而不會分心。

2。程式碼可重複使用性:您可以將相關操作整合到一個地方,使您的程式碼更具可讀性和可維護性。

3。錯誤處理: 每當模型變更時,觀察者都會自動執行資料驗證或後台更新等任務,幫助您避免錯誤。

4。自動事件處理:想要在每次建立或更新記錄時觸發操作?觀察員為您提供支援。

簡而言之,觀察者非常適合組織您想要在應用程式生命週期的各個階段執行的邏輯。

Eloquent Hooks 概述:

- 已檢索: 從資料庫檢索記錄後觸發。
- 建立: 在建立新記錄之前觸發。
- Created: 成功建立新記錄後執行。
- 更新: 在更新現有記錄之前啟動。
- 更新: 更新記錄後觸發。
- 儲存: 在儲存記錄之前運行,無論是新建立還是更新。
- 已儲存: 儲存記錄後發生,無論是新建立的還是更新的。
- 刪除: 在刪除或軟體刪除記錄之前啟動。
- 已刪除: 刪除或軟體刪除記錄後啟動。
- 恢復: 在恢復軟刪除記錄之前觸發。
- 已恢復: 在成功恢復軟刪除記錄後運行。

逐步指南:如何建立和使用觀察者

讓我們用一個現實世界的例子來討論觀察者。想像一下,我們正在建立一個部落格應用程序,每次用戶發布貼文時,我們都希望:

  • 根據標題自動產生 slug。
  • 通知管理員。
  • 記錄發布日期。

以下是我們如何使用 Laravel Observers 來實現這一目標!

第 1 步:建立觀察者類別
Laravel 可以輕鬆產生觀察者類別。執行此命令:

php artisan make:observer PostObserver --model=Post
登入後複製
登入後複製

這將在 app/Observers 目錄中產生一個 PostObserver 類別並將其連結到我們的 Post 模型。

第 2 步:在觀察者中定義事件

開啟PostObserver類,你會看到一些已經存在的方便的方法。每個方法對應一個模型事件,如建立、更新、刪除等。

讓我們將自訂邏輯新增至建立事件中,以便它產生一個 slug 並記錄發布日期:

use Illuminate\Support\Str;
class PostObserver
{
   public function creating(Post $post)
   {
       $post->slug = Str::slug($post->title);
       $post->published_at = now();
   }

   public function created(Post $post)
   {
      Notification::send(User::admin(), new PostPublishedNotification($post));
   }
}
登入後複製

第 3 步:註冊觀察者

Laravel 提供了兩種方法來做到這一點:模型上的 ObservedBy 屬性或手動使用observe 方法

1.使用 ObservedBy 屬性

如果您使用 Laravel 10 ,您可以直接在模型上使用 ObservedBy 屬性。此屬性透過自動將觀察者連結到模型來簡化觀察者註冊:

use App\Observers\PostObserver;
use Illuminate\Database\Eloquent\Concerns\ObservedBy;

#[ObservedBy(PostObserver::class)]
class Post extends Model
{
   // Your Post model code
}
登入後複製

這種方法很乾淨,可以讓觀察者註冊到模型本身,減少設定步驟並保持 AppServiceProvider 不變。

2.手動註冊觀察者
如果您願意(或正在使用 10 之前的 Laravel 版本),您可以在 AppServiceProvider 的 boot 方法中手動註冊 Observer:

在AppProvidersAppServiceProvider.php中,加入observe方法以將觀察者連結到模型:

php artisan make:observer PostObserver --model=Post
登入後複製
登入後複製

註冊後,只要 Post 模型上發生對應的事件,Laravel 就會觸發你的 Observer 的方法。

第 4 步:測試你的觀察者

要查看觀察者的實際情況,請嘗試在您的應用程式中建立或更新貼文。 slug 將自動生成,發布日期將自行設置,我們假設的管理員將收到通知。觀察者讓這一切悄悄發生,就像真正的忍者一樣。


感謝您的閱讀!我希望這能為您的專案激發一些新的想法。如果您有興趣將高品質的開發變為現實,請隨時與我們聯繫——我很樂意與您聯繫並探索我們如何實現這一目標。

以上是Laravel 觀察者:應用程式生命週期中的沉默忍者的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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