mcpField
A
api-platform-state-providers

api-platform-state-providers

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

api-platform-state-providers について

Symfony 向けの API Platform ステートプロバイダーとプロセッサーの実装スキルです。別のデータソース、Doctrine への委譲、永続化処理、操作単位の設定を扱います。

主な機能

  1. 01カスタムステートプロバイダー
  2. 02カスタムステートプロセッサー
  3. 03Doctrine プロバイダーとプロセッサーへの委譲
  4. 04操作ごとのプロバイダーとプロセッサー設定
  5. 05永続化と副作用の実行順序

活用シーン

  1. 01Doctrine 以外のデータソースから読み取り
  2. 02Doctrine の結果にテナント範囲を適用
  3. 03永続化の前後にビジネスロジックを実行
  4. 04v4 の読み取りエンドポイントからクエリやコマンドを実行

インストール

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

$npx skills add https://github.com/dev-toolings/superpowers-symfony --skill api-platform-state-providers

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

同梱ファイルreference.md

詳細

Api Platform State Providers (Symfony)

使用する場面

  • デフォルトの Doctrine プロバイダー以外のソースからデータを読み取る場合。
  • Doctrine プロバイダーをラップして、結果を後処理する場合(DTO の返却、テナントスコープの適用)。
  • 永続化の前後にビジネスロジックを実行する必要がある場合(ハッシュ化、スラッグの生成、メッセージのディスパッチ)。
  • v4 の読み取りエンドポイントで、プロセッサーを通じてクエリまたはコマンドをディスパッチする場合。

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

  1. ProviderInterface::provide() を実装し、iterable|object|null を返します。null の場合は 404 になります(v3.4 では mixed と宣言されています)。
  2. Doctrine による取得を維持するには、#[Autowire] を使って api_platform.doctrine.orm.state.item_provider と api_platform.doctrine.orm.state.collection_provider を注入します。
  3. ProcessorInterface::process() を実装し、api_platform.doctrine.orm.state.persist_processor または remove_processor に処理を委譲します。
  4. リソースまたはオペレーションに provider: と processor: を指定して接続します。自動構成によって登録されるため、api_platform.state_provider または api_platform.state_processor タグが必要なのは、自動構成を使わない場合だけです。
  5. GET または GetCollection にプロセッサーを適用する場合は、write: true を追加します(v4 のみ)。

注意事項

  • 内側のプロセッサーを呼び出す前に永続化前のロジックを実行し、呼び出しから戻った後に副作用を実行します。
  • プロセッサーは作成または変更されたオブジェクトを返し、DELETE の場合は何も返しません。
  • 安全なメソッドでの write: true は v4 のみです。v3.4 のプロセッサーは書き込みメソッドでのみ実行されます。
  • DataProvider と DataPersister は v2 のインターフェースで、現在は存在しません。

段階的な情報開示

  • 実行方針とリスク管理には、このファイルを使用します。
  • 詳細な実装が必要な場合は、リファレンスを開きます。

出力の要件

  • 追加したプロバイダーとプロセッサー、およびそれらを接続したオペレーション。
  • デコレートする組み込みサービス。
  • Not Found、成功、副作用の各パスのテスト。

リファレンス

  • reference.md

コメント