skillup

技術ブログ

アーキテクト設計全般

event-listenerについて

投稿日:

前回Observeパターンに触れましたが、少し似たパターンとしてevent-listenerを使ったパターンが存在します。

Model(Eloquentのフック)というのが大まかな共通項ですかね。

そもそもObsereveパターンを使おうとしたのですが、after_commit=true(commitが成功した時のみ実行)のオプションを設定するとテストコード時にobserveが動かない・・・ということが発生しました。(Laravelのバグのようです。)

DB::afterCommit callbacks aren’t run in tests when RefreshDatabase trait is used

というわけで代替案としてevent-listenerを。

公式ドキュメント

https://readouble.com/laravel/8.x/ja/events.html

event-listenerパターンを実装した詳しいソースは以下に書きました。

https://github.com/umanari145/effector/commit/2bbe928ec03b9c5df13660e5863cc7154653eb5f

observeというと監視という形なのでLogのようなケースで使われるのですが、こちらはもっと幅広く、特定動作の後にフックさせるというパターンで使われるようです。

ちなみに下記の記事でうまくまとまっててわかりやすかったです。

Laravelのイベント&リスナを使ってObserverパターンを実装する

[Laravel] Eloquentモデルのイベントをフックする4つの方法

-アーキテクト設計全般

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

オブジェクト指向 クラスの設計と業務ロジックの整理

本日も引き続き「現場で役立つシステム設計の原則」を読み進めてます。 本日は主にクラスの作り方について。 Contents1 クラス設計と業務ロジック1.1 要点1.2 感想 クラス設計と業務ロジック …

no image

DIとDIコンテナについて再考

今までも何度かやったDI(Dependency Injection = 依存性の注入)について。 以前のリンク PHPにおけるDI スコープアノテーションとCDIについて Contents1 DIとは …

no image

値オブジェクトやファーストコレクションなどについて

以前から言葉としては知っていたけれど、オブジェクト思考の重要な概念に関して。 Contents1 値オブジェクト(Value Object)2 ファーストコレクション(コレクションオブジェクト) 値オ …

no image

オブジェクト指向 アプリケーション層に関して

本日も引き続き「現場で役立つシステム設計の原則」を読み進めてます。 本日は主にアプリケーション層(以下AP層)。MVCモデルでいうところのコントローラーに近い?)の考え方について。 Contents1 …

no image

オブジェクト指向 アプリケーション間連携(主にWebAPI)

本日も引き続き「現場で役立つシステム設計の原則」を読み進めてます。 本日はプレゼンテーション層、いわゆるMVCのViewにあたる部分。 Contents1 アプリケーション間連携(主にWEBAPIに関 …

アーカイブ