LoginSignup
19

More than 5 years have passed since last update.

fuelphp エラーハンドリングのまとめ

Last updated at Posted at 2013-08-10

 fuelphpのエラーハンドリングがややこしい。処理記述箇所が複数有るっぽいのがそもそもの原因。

追記1014:なんか違うっぽかったので修正しました。

基本的な流れ(ExceptionHandler系)

 catchサれなかった例外に対する処理は次の通り

  1. handleメソドの有無を調べてアレば実行
  2. handleが無くて本番環境なら,errors/productionをレンダする。
  3. handleが無くて本番でも無ければ、errors/php_fatal_errorをレンダする。

こんなかんじの流れ。handleメソド実装しとけばとりあえずなんでも出来る、って感じになってる。

本番かどうかはFuel::$env === 'production'で判定。

自動レンダするerrors/production.phpはFinder_Path依存で。デフォルトの表示はCoreの方のFinder_Pathから持ってきてる。appに置いたら上書き出来る。というか間違えて置かないように。

ルーティング設定周りの処理(自動catch)

 上記は未catchの例外に対して適用される処理。fuelphpでは結果を生成する際、内部でHttpNotFoundExceptionのみ自動でcatchする。

 catchして何をするかというとルーティング設定の404ディレクティブを見てこちらに飛ばそうとする。_404_設定が有効でなければパススルーでまた例外をそのままthrowする。

組み込み例外

 基本的には例外はhandleメソド持ってないので,未catch例外に対しては上で言う2.3.あたりの処理が行われる(通常のエラー画面)。

 が、中にはいくつかhandleメソド実装済みの組み込み例外も存在するよう。

HttpServerErrorException

 handle内ではviews/500.phpのレンダが指示されている。

HttpNotFoundException

 handle内ではviews/404.phpのレンダが支持されている。

 これらは全てHttpExceptionの継承。コレの継承クラスなら,handleメソドを実装せずとも、
responseメソドでreturn ResponseするだけでOKみたい。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19