---
paths:
  - "**/*.php"
  - "**/composer.json"
---
# PHP コーディングスタイル

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

## 標準

- **PSR-12** のフォーマットと命名規則に従う。
- アプリケーションコードでは `declare(strict_types=1);` を優先する。
- 新しいコードが許す限り、スカラー型ヒント、戻り値の型、型付きプロパティをあらゆる箇所で使用する。

## 不変性

- サービス境界を越えるデータには不変の DTO と値オブジェクトを優先する。
- 可能な場合はリクエスト/レスポンスペイロードに `readonly` プロパティまたは不変コンストラクタを使用する。
- 単純なマップには配列を使用する; ビジネスクリティカルな構造は明示的なクラスに昇格させる。

## フォーマット

- フォーマットには **PHP-CS-Fixer** または **Laravel Pint** を使用する。
- 静的解析には **PHPStan** または **Psalm** を使用する。
- Composer スクリプトをチェックインし、ローカルと CI で同じコマンドが実行されるようにする。

## インポート

- 参照されるすべてのクラス、インターフェース、トレイトに `use` 文を追加する。
- プロジェクトが明示的に完全修飾名を好む場合を除き、グローバル名前空間への依存を避ける。

## エラーハンドリング

- 例外的な状態には例外をスローする; 新しいコードでは隠れたエラーチャネルとして `false`/`null` を返すことを避ける。
- フレームワーク/リクエスト入力をドメインロジックに到達する前に検証済み DTO に変換する。

## リファレンス

スキル: `backend-patterns` でより広範なサービス/リポジトリの階層化ガイダンスを参照してください。
