ホームページ  >  記事  >  バックエンド開発  >  Laravel オブザーバー: アプリケーションライフサイクルの沈黙の忍者

Laravel オブザーバー: アプリケーションライフサイクルの沈黙の忍者

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-08 02:00:02624ブラウズ

Laravel Observers: The Silent Ninjas of Your Application Lifecycle

はじめに

Web サイトでフォームを送信すると、目に見えないアシスタントがやって来て、すべてを再度チェックすることを想像してください。さらに詳細を追加したり、指を離さずにウェルカム レターを送信したりすることもできます。 Laravel オブザーバーは、静かに働く舞台裏のアシスタントのようなものです。そして、必要なときにすべてのタスクを処理できるのは強力です。この記事では、Laravel でオブザーバーがどのように機能するのか、モデルのイベント処理においてオブザーバーがアプリのサイレントニンジャである理由について詳しく説明します。そして、実際の例でそれらのイベントを最大限に活用する方法を説明します。

Laravel オブザーバーとは何ですか?

Laravel オブザーバーは、作成、更新、削除などの特定のイベントを監視することにより、モデルのライフサイクルの管理に役立つリスナー クラスです。オブザーバーは、これらのイベントごとにアクションを定義できます。コントローラーとモデルをクリーンかつ集中的に保ちます。オブザーバーはアプリケーション内で「イベント エキスパート」として機能し、コードベースを改善するために必要なバックエンド作業を処理します。イベント駆動型の作業分離により、組織と効率が向上します。オブザーバーは、よりモジュール化され保守しやすいアプリケーション構造に貢献します。

オブザーバーを使用する理由

1.よりクリーンなコントローラーとモデル: オブザーバーは繰り返しのアクションを処理するため、コントローラーとモデルは気を散らすことなく主な作業に集中できます。

2.コードの再利用性: 関連するアクションを 1 か所に統合​​できるため、コードが読みやすく保守しやすくなります。

3.エラー処理: オブザーバーは、モデルが変更されるたびにデータ検証やバックグラウンド更新などのタスクを自動化することで、エラーを回避するのに役立ちます。

4.自動イベント処理: レコードが作成または更新されるたびにアクションをトリガーしたいですか?監視者があなたをサポートします。

つまり、オブザーバーは、アプリのライフサイクルのさまざまな段階で実行するロジックを整理するのに最適です。

雄弁なフックの概要:

- 取得: データベースからレコードが取得された後にトリガーされます。
- 作成中: 新しいレコードが作成される直前に起動します。
- Created: 新しいレコードが正常に作成された後に実行されます。
- 更新中: 既存のレコードが更新される前にアクティブ化されます。
- Updated: レコードが更新された後に起動します。
- 保存: 新規作成か更新かにかかわらず、レコードが保存される前に実行されます。
- 保存済み: 新規作成または更新にかかわらず、レコードが保存された後に発生します。
- 削除: レコードが削除または論理的に削除される前に開始されます。
- 削除済み: レコードが削除または論理的に削除された後にアクティブ化されます。
- 復元: 論理的に削除されたレコードが復元される前に起動します。
- 復元済み: 論理的に削除されたレコードが正常に復元された後に実行されます。

ステップバイステップ ガイド: オブザーバーを作成および使用する方法

実世界の例を用いてオブザーバーについて説明しましょう。ブログ アプリを構築していて、ユーザーが投稿を公開するたびに次のことを実行したいと想像してください。

  • タイトルからスラッグを自動生成します。
  • 管理者に通知します。
  • 公開日を記録します。

Laravel Observers を使用してこれを実現する方法を次に示します!

ステップ 1: オブザーバー クラスを作成する
Laravel を使用すると、オブザーバー クラスを簡単に生成できます。次のコマンドを実行します:

php artisan make:observer PostObserver --model=Post

これにより、app/Observers ディレクトリに PostObserver クラスが生成され、Post モデルにリンクされます。

ステップ 2: オブザーバーでイベントを定義する

PostObserver クラスを開くと、いくつかの便利なメソッドがすでに配置されていることがわかります。各メソッドは、作成、更新、削除などのモデル イベントに対応します。

カスタム ロジックを作成イベントに追加して、スラッグを生成し、公開日を記録しましょう。

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 は、これを行う 2 つの方法を提供します。モデルの ObservedBy 属性を使用するか、または Observed メソッドを手動で使用します

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.オブザーバーの手動登録
必要に応じて (または Laravel 10 より前のバージョンで作業している場合)、AppServiceProvider のブート メソッドでオブザーバーを手動で登録できます。

AppProvidersAppServiceProvider.php に、observer をモデルにリンクするための Observer メソッドを追加します。

php artisan make:observer PostObserver --model=Post

一度登録すると、Post モデルで対応するイベントが発生するたびに、Laravel はオブザーバーのメソッドをトリガーします。

ステップ 4: オブザーバーをテストする

オブザーバーの動作を確認するには、アプリで投稿を作成または更新してみてください。スラッグは自動的に生成され、公開日が自動的に設定され、仮想の管理者が通知を受け取ります。監視者は、まさに本物の忍者のように、これらすべてを静かに実行します。


読んでいただきありがとうございます!これがあなたのプロジェクトに新しいアイデアをもたらすことを願っています。質の高い開発を実現することに興味がある場合は、お気軽にご連絡ください。ぜひつながり、それを実現する方法を探っていきたいと思っています。

以上がLaravel オブザーバー: アプリケーションライフサイクルの沈黙の忍者の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。