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

キャッシュの使い所とメリデメに関して(主に一覧系の処理に関して)

現在のプロジェクトがかなりの規模のECサイトになるため、正確性とパフォーマンスのトレードオフなどが先日議題にあがりました。 完全なトレードオフではないのかもしれませんが、比較的あちらをたてればこちらが …

no image

オブジェクト指向設計 単一責任のクラスの設計

オブジェクト指向をするうえでの大事なポイントなど Contents1 単一責任のクラス設計1.1 メモ1.2 実際のコーディング上のコツ1.3 感想1.4 参考文献 単一責任のクラス設計 メモ 単一責 …

no image

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

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

no image

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

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

no image

ステートパターンについて

トランザクション系のデータの場合、スタータスの遷移がキーになることが多く、仕様の把握に関してこの部分の理解が重要です。 今まで、ステータスの遷移に関してはExcelを使って表現していたことが多かったの …

アーカイブ