CLI スクリプト
バッチジョブは script/ ディレクトリに配置します。
<?php
// script/cleanup.php
require_once '__flexagon.php';
$deleted = (new \ExampleUser\UserDAO())->deleteExpired();
echo "Deleted: {$deleted} rows\n";
php script/cleanup.php runtimeStage=production days=30
key=value 形式の引数は、$_PARAMS と $_REQUEST の両方に解析されます。runtimeStage は予約語で、読み込む設定ディレクトリを選択します。
CLI から実行すると、FLEXAGON_ENV::$_RUNTIME_ENV は RUNTIME_ENV_SCRIPT に設定され、セッション、ルーティング、出力バッファリングを含む Web リクエストのパイプライン全体がスキップされます。
フレームワーク CLI
フレームワーク自体は 2 つのコマンドを提供しています。
php script/flexagon.php init [--path=DIR] [--force]
php script/flexagon.php check [--path=DIR]
| 実行方法 | 対応するインストール形態 |
|---|---|
php script/flexagon.php |
すべて(Composer・PHAR・ソース) |
php vendor/bin/flexagon |
Composer によるインストール |
PHAR は
phar://...形式のスクリプトパスとして PHP CLI に渡すことができないため、script/flexagon.phpがエントリーポイントとして機能します。PHAR にはinit用のテンプレートが含まれていないため、このインストール形態ではcheckのみ利用できます。
init
プロジェクト構造を構成する 34 個のファイルを作成します。composer create-project flexagon/skeleton で始めた場合、これらのファイルはすでに存在します。このコマンドは主に、既存のプロジェクトに composer require で flexagon/framework を追加する場合 に役立ちます。
既存のファイルには手を加えません。 アップグレード後に実行して、新たに追加された構造ファイルだけを追加することもできます。
create script/flexagon.php
keep public/index.php
1 created, 22 kept, 0 failed
既存のファイルを上書きする必要がある場合は --force を使用してください。変更を加えたファイルはテンプレートの内容に置き換えられるため、注意が必要です。
check
プロジェクトのレイアウトとランタイム設定に矛盾がないかを確認し、問題が見つかった場合は終了コード 1 を返す ため、デプロイパイプラインに組み込むのに適しています。
| 項目 | 確認内容 | 結果 |
|---|---|---|
php |
8.3 以降 | エラー |
ext-json · ext-openssl · ext-pdo |
ロード済み | エラー |
opcache.save_comments |
有効 | エラー |
project layout |
flexagon.php · application/_Global.php · public/__flexagon.php · public/_router.php |
エラー |
config placement |
_Config.php と application/ が public/ やいずれの public_* の下にも公開されていない |
エラー |
bootstrap |
フレームワークが正常に起動する | エラー |
session key |
$SESSION_AUTO_START が有効な場合の $SESSION_ENCRYPTION_STRING の長さ |
エラー |
data sources |
設定済みで、テンプレートのプレースホルダーが残っていない | 警告 |
display_errors |
本番モードで有効になっている | 警告 |
secrets placement |
public/ やいずれかの public_* の下にある .env.php / .env |
エラー |
.env.php |
配列を返し、git で追跡されていない | エラー |
settings |
.env.example.php にあるキーのうち未設定のもの |
警告 |
secrets in config |
_Config.php に直接記述されたデータソースのパスワード |
警告 |
.env |
存在するが Flexagon では読み込まれない | 警告 |
opcache.file_cache |
.env.php が存在する状態で有効になっている(コンパイルされたシークレットがディスク上に残る) |
警告 |
以下のチェックは特に重要です。これらの問題は、本来であれば 何のエラーも出さずに失敗する ためです。
opcache.save_commentsが無効になっていると、@encrypt、@db_auto_timestamp、@exclude_from_get_arrayがすべて無視されます。暗号化されるべきカラムが、例外も発生しないまま平文で保存される可能性があります。_Config.phpがpublic/の下に配置されていると、PHP の処理が利用できない場合や設定が誤っている場合に、データベースの認証情報がそのまま配信されてしまう可能性があります。- データソースにデフォルトの
username/dbnameプレースホルダーが残っていると、接続はただ失敗します。
$ php script/flexagon.php check
ok php 8.3.33
ok ext-json
ok opcache.save_comments
ok project layout
ok bootstrap
warn data sources default still contains template placeholders
ok session auto start off
ok display_errors off
0 problem(s), 1 warning(s)