Appearance
重要な設計原則
プロジェクト構成(概要) の詳細です。
1. 環境分離
- 開発環境: ルートディレクトリに開発ツール(PHPStan、PHPCS、PHPUnit)
- 本番環境: core_YYYYMMDD_HHMMSS 形式のディレクトリのみをアップロード(例: core_20250120_143022/)
- 依存関係の分離: 開発ツールとアプリケーション依存関係を分離
2. 動的パス管理
php
// connector.php(要約)。デフォルトは _src(開発時)。本番デプロイ後は VERSION を _YYYYMMDD_HHMMSS に変更する。
if ( ! defined( 'VERSION' ) ) {
define( 'VERSION', '_src' );
}
require_once __DIR__ . '/core' . VERSION . '/vendor/autoload.php';
$app = new \App\Bootstrap\Application( __DIR__ );
$app->boot();VERSION と ROOT の定義は Application のコンストラクタ内で行われます。本番環境では VERSION を _YYYYMMDD_HHMMSS(例: _20250120_143022)に変更し、core . VERSION で core_20250120_143022 を指すようにします。
3. ビルドプロセス
bin/build.sh の動作は以下のとおりです。
- プロジェクトルートの決定:
config/local.envのDEPLOY_LOCAL_PATHを参照。未設定時はスクリプト配置からプロジェクトルートを自動判定(実行場所に依存しない形)。 - _build/* の削除: 既存の
_build/*を一度すべて削除してから処理。既存のビルド成果物は毎回削除される(履歴を残したい場合は要バックアップ・要改修)。 - core のコピー:
core_srcを_build/core_YYYYMMDD_HHMMSSにコピー(timestamp は%Y%m%d_%H%M%S形式)。
本番用の追加最適化(CSS の minify 等)は現行スクリプトでは未実施。必要に応じて別手順で実施する。
4. 依存性逆転の原則(DIP)
- ControllerはServiceInterface経由のみ依存
- ServiceはRepositoryInterface経由のみ依存
- 具体実装への直接依存を禁止
- Deptracによるアーキテクチャルールの強制