設定

概要

Flightは、アプリケーションのニーズに合わせてフレームワークのさまざまな側面を設定する簡単な方法を提供します。一部はデフォルトで設定されていますが、必要に応じて上書きすることができます。また、アプリケーション全体で使用する独自の変数を設定することもできます。

理解

setメソッドを使用して設定値を設定することで、Flightの特定の動作をカスタマイズできます。

Flight::set('flight.log_errors', true);

app/config/config.phpファイルでは、使用可能なすべてのデフォルト設定変数を確認できます。

基本的な使用方法

Flight設定オプション

以下は、利用可能なすべての設定のリストです:

  • flight.base_url ?string - Flightがサブディレクトリで実行されている場合、リクエストのベースURLを上書きします。(デフォルト: null)
  • flight.case_sensitive bool - URLの大文字小文字を区別したマッチング。(デフォルト: false)
  • flight.handle_errors bool - Flightが内部ですべてのエラーを処理できるようにします。(デフォルト: true)
    • FlightにデフォルトのPHP動作ではなくエラーを処理させたい場合は、これをtrueにする必要があります。
    • Tracyをインストールしている場合は、Tracyがエラーを処理できるようにfalseに設定してください。
    • APMプラグインをインストールしている場合は、APMがエラーをログに記録できるようにtrueに設定してください。
  • flight.log_errors bool - Webサーバーのエラーログファイルにエラーを記録します。(デフォルト: false)
    • Tracyをインストールしている場合、TracyはTracyの設定に基づいてエラーをログに記録し、この設定は使用されません。
  • flight.debug bool - エラーが発生したときにブラウザに詳細なエラー情報(例外メッセージ、コード、スタックトレース)を出力します。(デフォルト: false)
    • 本番環境では絶対に有効にしないでください — 内部アプリケーションの詳細が漏洩します。ローカル開発またはステージングでのみ使用してください。
    • falseの場合、代わりに一般的な500 Internal Server Errorが表示されます。エラーをサーバー側でキャプチャするためにflight.log_errorsと組み合わせます。
  • flight.allow_method_override bool - X-HTTP-Method-OverrideリクエストヘッダーまたはPOSTボディの_methodフィールドを介してHTTPメソッドを上書きできるようにします。(デフォルト: true)
    • HTMLフォームベースのメソッドスプーフィングを必要としないアプリケーションでは、falseに設定することを推奨します。これにより、クライアントが標準のPOSTフォームを介してDELETEまたはPUTリクエストを偽造することを防ぎます。
    • 詳細についてはセキュリティを参照してください。
  • flight.views.path string - ビューテンプレートファイルを含むディレクトリ。(デフォルト: ./views)
  • flight.views.extension string - ビューテンプレートファイルの拡張子。(デフォルト: .php)
  • flight.content_length bool - Content-Lengthヘッダーを設定します。(デフォルト: true)
    • Tracyを使用している場合は、Tracyが正しくレンダリングできるようにfalseに設定する必要があります。
  • flight.v2.output_buffering bool - レガシー出力バッファリングを使用します。v3への移行を参照してください。(デフォルト: false)

ローダー設定

ローダー用の追加の設定もあります。これにより、クラス名に_を含むクラスをオートロードできます。

// アンダースコアを使用したクラスの読み込みを有効にする
// デフォルトはtrue
Loader::$v2ClassLoading = false;

変数

Flightでは、アプリケーションのどこでも使用できるように変数を保存できます。

// 変数を保存する
Flight::set('id', 123);

// アプリケーションの別の場所で
$id = Flight::get('id');

変数が設定されているかどうかを確認するには:

if (Flight::has('id')) {
  // 何かする
}

変数をクリアするには:

// id変数をクリアする
Flight::clear('id');

// すべての変数をクリアする
Flight::clear();

注: 変数を設定できるからといって、必ずしも設定すべきではありません。この機能は控えめに使用してください。その理由は、ここに保存されたものはすべてグローバル変数になるからです。グローバル変数は、アプリケーションのどこからでも変更できるため、バグの追跡が困難になるため悪いです。また、ユニットテストなどの作業も複雑になる可能性があります。

エラーと例外

flight.handle_errorsがtrueに設定されている場合、すべてのエラーと例外はFlightによってキャッチされ、errorメソッドに渡されます。

デフォルトの動作は、いくつかのエラー情報を含む一般的なHTTP 500 Internal Server Errorレスポンスを送信することです。

必要に応じて上書きできます:

Flight::map('error', function (Throwable $error) {
  // エラーを処理する
  echo $error->getTraceAsString();
});

デフォルトでは、エラーはWebサーバーに記録されません。以下のように設定を変更することでこれを有効にできます:

Flight::set('flight.log_errors', true);

404 Not Found

URLが見つからない場合、FlightはnotFoundメソッドを呼び出します。デフォルトの動作は、簡単なメッセージを含むHTTP 404 Not Foundレスポンスを送信することです。

必要に応じて上書きできます:

Flight::map('notFound', function () {
  // 見つからない場合の処理
});

関連項目

  • Flightの拡張 - Flightのコア機能を拡張およびカスタマイズする方法。
  • ユニットテスト - Flightアプリケーションのユニットテストの書き方。
  • Tracy - 高度なエラーハンドリングとデバッグ用のプラグイン。
  • Tracy拡張機能 - TracyをFlightと統合するための拡張機能。
  • APM - アプリケーションパフォーマンス監視とエラートラッキング用のプラグイン。

トラブルシューティング

  • 設定のすべての値を見つけるのに問題がある場合は、var_dump(Flight::get());を実行できます。

変更履歴

  • v3.18.1 - flight.debugおよびflight.allow_method_override設定オプションを追加。
  • v3.5.0 - レガシー出力バッファリング動作をサポートするためにflight.v2.output_bufferingの設定を追加。
  • v2.0 - コア設定を追加。