Skip to content

Bootstrap層とDI

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

役割

connector.php は「読み込みだけ」に限定し、定数定義・コンテナのビルド・ServiceProvider の実行は Bootstrap 層に委譲しています。

  • connector.php: VERSION のフォールバック、autoload の読み込み、Application::boot() の呼び出しのみ。
  • Applicationcore_src/Bootstrap/Application.php): 定数(ROOT 等)の設定、PSR-11 コンテナのビルド、各 ServiceProvider の register / boot を順に実行。テンプレート等からコンテナを参照する場合は Application::get_instance() で boot 済みインスタンスを取得できる。

コンテナ(DI)

DI は PSR-11 コンテナで実現しています(「DIContainer」というクラス名は使用していません)。

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 の順で実行されます。