mcpField
D
doctrine-events

doctrine-events

github.com/dev-toolings開発22784 回インストール3 週間前に更新
リポジトリ

doctrine-events について

doctrine-eventsは、エンティティ永続化時の副作用やDoctrineイベントの設計を扱うSymfony開発スキルです。ORM 3へのサブスクライバー移行も含み、コールバックやリスナーの選択・設定と、実データベースを使った機能テストを案内します。

主な機能

  1. 01コールバックやリスナー種別の選択
  2. 02属性によるリスナー設定
  3. 03イベント別引数クラスの使用
  4. 04実データベースで副作用をテスト
  5. 05ORM 3移行時の注意点

活用シーン

  1. 01永続化時のタイムスタンプやslugの追加
  2. 02イベント経由での検索インデックスや通知
  3. 03ORM 3向けDoctrineサブスクライバーの移行

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/dev-toolings/superpowers-symfony --skill doctrine-events

インストール後、Claude Code で/doctrine-eventsを入力して読み込まれたか確認します。

同梱ファイルreference.md

詳細

Doctrine イベント(Symfony)

使用する場面

  • エンティティの永続化時に副作用(タイムスタンプ、スラッグ、検索インデックス作成、通知)が必要な場合。
  • EventSubscriberInterface を実装した Doctrine サブスクライバーを ORM 3 に移行する場合。
  • ライフサイクルコールバック、エンティティリスナー、グローバルライフサイクルリスナーのどれを選ぶか判断する場合。

デフォルトのワークフロー

  1. 最も対象範囲の狭い仕組みを選びます。コールバック(単一のエンティティ、依存関係なし)→ エンティティリスナー(単一のエンティティ、サービスが必要)→ ライフサイクルリスナー(横断的、すべてのエンティティ)。
  2. 属性(#[ORM\HasLifecycleCallbacks]、#[AsEntityListener]、#[AsDoctrineListener])を使って設定します。
  3. イベント引数には、イベントごとのクラス(PostPersistEventArgs、PreUpdateEventArgs、…)を型指定します。
  4. 実際の DB に対する的を絞った機能テストで、副作用が発生することを検証します。

ガードレール

  • ORM 3.0 では EventSubscriberInterface を実装した Doctrine サブスクライバーが削除されています。再導入してはいけません。
  • グローバルライフサイクルリスナーはすべてのエンティティで実行されるため、エンティティの型を早い段階で確認してください。
  • Doctrine イベントハンドラー内で flush() を呼び出してはいけません。処理中の作業単位が破損します。
  • preUpdate には制限があります。フィールドの変更には $args->setNewValue() のみを使い、関連には触れてはいけません。

段階的な情報開示

  • 実行方針とリスク管理には、このファイルを使用してください。
  • 3 つの仕組み、イベント引数の対応表、サブスクライバーからの移行については、reference.md を開いてください。

出力要件

  • 適切な属性を設定したリスナー/コールバッククラス。
  • 選択した仕組みの理由。
  • 検証結果(副作用の発生を確認するテスト)。

参考資料

  • reference.md

コメント