---
paths:
  - "**/*.php"
  - "**/composer.json"
---
# PHP パターン

> このファイルは [common/patterns.md](../common/patterns.md) を PHP 固有のコンテンツで拡張します。

## 薄いコントローラ、明示的なサービス

- コントローラはトランスポートに集中する: 認証、バリデーション、シリアライゼーション、ステータスコード。
- ビジネスルールは HTTP ブートストラップなしでテストしやすいアプリケーション/ドメインサービスに移動する。

## DTO と値オブジェクト

- 形状の重い連想配列をリクエスト、コマンド、外部 API ペイロード用の DTO に置き換える。
- 金額、識別子、日付範囲、その他の制約のある概念には値オブジェクトを使用する。

## 依存性注入

- フレームワークのグローバルではなく、インターフェースまたは狭いサービス契約に依存する。
- サービスロケータ検索なしでテスト可能になるよう、コンストラクタ経由で協力オブジェクトを渡す。

## 境界

- モデル層が永続化以上のことをしている場合、ORM モデルをドメイン判断から分離する。
- サードパーティ SDK を小さなアダプタでラップし、コードベースの残りが彼らの契約ではなく自身の契約に依存するようにする。

## リファレンス

スキル: `api-design` でエンドポイントの規約とレスポンス形状のガイダンスを参照してください。
スキル: `laravel-patterns` で Laravel 固有のアーキテクチャガイダンスを参照してください。
