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

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

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

no image

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

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

no image

オブジェクト指向 データベース層

本日も引き続き「現場で役立つシステム設計の原則」を読み進めてます。 本日は主にデータベース層の考え方について。 Contents1 データべース層1.1 要点1.1.1 典型的なダメテーブル設計1.1 …

no image

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

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

no image

abstract,interface,traitなどについて

昔はようわからなかったabstract(継承全般)、interface、traitの使い分けなどについて。 今の現場でいろいろと考えることがあり、自分なりにいろんな方の知見を共有できたので、メモしてお …

アーカイブ