Skip to content

重要な設計原則

プロジェクト構成(概要) の詳細です。

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 の動作は以下のとおりです。

  1. プロジェクトルートの決定: config/local.envDEPLOY_LOCAL_PATH を参照。未設定時はスクリプト配置からプロジェクトルートを自動判定(実行場所に依存しない形)。
  2. _build/* の削除: 既存の _build/* を一度すべて削除してから処理。既存のビルド成果物は毎回削除される(履歴を残したい場合は要バックアップ・要改修)。
  3. core のコピー: core_src_build/core_YYYYMMDD_HHMMSS にコピー(timestamp は %Y%m%d_%H%M%S 形式)。

本番用の追加最適化(CSS の minify 等)は現行スクリプトでは未実施。必要に応じて別手順で実施する。

4. 依存性逆転の原則(DIP)

  • ControllerはServiceInterface経由のみ依存
  • ServiceはRepositoryInterface経由のみ依存
  • 具体実装への直接依存を禁止
  • Deptracによるアーキテクチャルールの強制