Appearance
Bootstrap層とDI
プロジェクト構成(概要) の詳細です。
役割
connector.php は「読み込みだけ」に限定し、定数定義・コンテナのビルド・ServiceProvider の実行は Bootstrap 層に委譲しています。
- connector.php: VERSION のフォールバック、autoload の読み込み、
Application::boot()の呼び出しのみ。 - Application(
core_src/Bootstrap/Application.php): 定数(ROOT 等)の設定、PSR-11 コンテナのビルド、各 ServiceProvider の register / boot を順に実行。テンプレート等からコンテナを参照する場合はApplication::get_instance()で boot 済みインスタンスを取得できる。
コンテナ(DI)
DI は PSR-11 コンテナで実現しています(「DIContainer」というクラス名は使用していません)。
- PSR-11 コンテナ:
Psr\Container\ContainerInterfaceを採用(PHP-DI 等で実装)。 - 設定: core_src/config/di.php でサービス・ショートコードのバインドを定義。
- ビルド: core_src/Infrastructure/Container/ContainerFactory.php が設定を読み込み、コンテナを生成。
Application は起動時に ContainerFactory::create() でコンテナをビルドし、各 ServiceProvider に渡して登録・起動します。di.php を変更した場合は、wp-content/cache/php-di のキャッシュ(または CompiledContainer.php)を削除してから再実行してください。
ServiceProvider
機能領域ごとにサービスを登録する ServiceProvider を採用しています。
- ConstantsServiceProvider: 定数定義(必要に応じて)。
- PostTypeServiceProvider: カスタム投稿タイプ(DailyArticle 等)の初期化。
- HandlerServiceProvider: REST API ハンドラー(PerformanceMeasurementHandler、AsyncLoadingHandler)の登録。ErrorHandler は REST 登録は行わず、Controller/ShortCode に注入される。
- ShortCodeServiceProvider: コンテナからショートコードを取得し、全ショートコードを
add_shortcodeで登録。
登録順は Application の get_providers() で固定されており、Constants → PostType → Handler → ShortCode の順で実行されます。