bootstrap.php
a-blog cms 共通 bootstrap (closure return 形式)
Web リクエスト以外 (CLI / cron / Symfony Console) からアプリケーションを起動するときの
共通前処理を closure として返す。$ablogcmsRoot (= config.server.php / index.php /
php/config/* が置かれた CMS ルートディレクトリ) は 呼び出し側で決定 する。
呼び出し側のシナリオ別の解決例:
-
cron/example.php (symlink デプロイ対応): $bootstrap(dirname($_SERVER['SCRIPT_FILENAME'], 2));
-
phpstan/bootstrap.php や PHPUnit のように Web docroot を介さないケース: $bootstrap(DIR . '/../ablogcms');
このファイルが提供するもの:
- REQUEST_TIME / START_TIME の定義
- config.server.php (DB 接続情報など) の読み込み
- php/config/app.php / polyfill.php / config.user.php の読み込み
- setPath() で SCRIPT_DIR / DOCUMENT_ROOT / LIB_DIR 等を確定
- composer autoload + 独自 autoload の登録
- .env (Dotenv) の読み込み
- env() 関数の定義
- $_SERVER のフォールバック
- 各種グローバル定数 (BID / EID / ... 等) のデフォルト値
Application::init() は呼ばないので、closure 実行後に呼び出し側で起動する:
$bootstrap = require DIR . '/php/bootstrap.php'; $bootstrap('/var/www/html/302x'); $config = appConfig(); $app = new \Acms\Application(); $app->init($config['aliases'], $config['providers']);
注意: 呼び出し側は require_once ではなく require (もしくは include) を使うこと。
require_once はキャッシュ後の 2 度目で true を返し、closure を取り出せない。