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

オブジェクト指向について その3

今回は場合分けによる変更コストとオブジェクト指向のメリットについてです。 例えば給付金が発生して、その金額を死亡時、退職時、通常時で場合分けするとき、if-elseで書けば下記のようになります。 [c …

no image

オブジェクト指向設計 ダックタイピング

オブジェクト指向シリーズ。ダックタイピング・・読む前は名前は聞いたことあるような気がする・・程度で細かいことは何一つわからない状態でした。今回具体的なコード例があった分イメージを何とかつかむことはでき …

no image

オブジェクト指向 値オブジェクトの活用と場合分けに関して

オブジェクト指向 その1 オブジェクト指向 その2 オブジェクト指向 その3 でオブジェクト指向に触れたんですが、基本から勉強しなおす必要があると思い、まとめ&追記 参考文献 現場で役に立つシステム設 …

no image

抽象性と可読性のトレードオフに関して

私自身プログラムを書く場合、とにかくコードを書く量を制限したいという思いが強く、多少でも共通化できる箇所がある場合はなるべく共通化するようにしておりましたが、時と場合によっては過剰に共通化したことによ …

no image

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

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

アーカイブ