api-platform-state-providers について
Symfony 向けの API Platform ステートプロバイダーとプロセッサーの実装スキルです。別のデータソース、Doctrine への委譲、永続化処理、操作単位の設定を扱います。
主な機能
- 01カスタムステートプロバイダー
- 02カスタムステートプロセッサー
- 03Doctrine プロバイダーとプロセッサーへの委譲
- 04操作ごとのプロバイダーとプロセッサー設定
- 05永続化と副作用の実行順序
活用シーン
- 01Doctrine 以外のデータソースから読み取り
- 02Doctrine の結果にテナント範囲を適用
- 03永続化の前後にビジネスロジックを実行
- 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 の読み取りエンドポイントで、プロセッサーを通じてクエリまたはコマンドをディスパッチする場合。
デフォルトのワークフロー
ProviderInterface::provide()を実装し、iterable|object|nullを返します。nullの場合は 404 になります(v3.4 ではmixedと宣言されています)。- Doctrine による取得を維持するには、
#[Autowire]を使ってapi_platform.doctrine.orm.state.item_providerとapi_platform.doctrine.orm.state.collection_providerを注入します。 ProcessorInterface::process()を実装し、api_platform.doctrine.orm.state.persist_processorまたはremove_processorに処理を委譲します。- リソースまたはオペレーションに
provider:とprocessor:を指定して接続します。自動構成によって登録されるため、api_platform.state_providerまたはapi_platform.state_processorタグが必要なのは、自動構成を使わない場合だけです。 GETまたはGetCollectionにプロセッサーを適用する場合は、write: trueを追加します(v4 のみ)。
注意事項
- 内側のプロセッサーを呼び出す前に永続化前のロジックを実行し、呼び出しから戻った後に副作用を実行します。
- プロセッサーは作成または変更されたオブジェクトを返し、
DELETEの場合は何も返しません。 - 安全なメソッドでの
write: trueは v4 のみです。v3.4 のプロセッサーは書き込みメソッドでのみ実行されます。 DataProviderとDataPersisterは v2 のインターフェースで、現在は存在しません。
段階的な情報開示
- 実行方針とリスク管理には、このファイルを使用します。
- 詳細な実装が必要な場合は、リファレンスを開きます。
出力の要件
- 追加したプロバイダーとプロセッサー、およびそれらを接続したオペレーション。
- デコレートする組み込みサービス。
- Not Found、成功、副作用の各パスのテスト。
リファレンス
reference.md
コメント
Markdown 対応