Curry
PHP Framework

core

db

html

utility

ErrorHandlerStandard

クラス概要

ErrorHandlerStandardはエラー発生時の処理を定義します。
このクラスではエラーの種類によって二種類の処理が定義されています。
これはURLで指定されたコントローラーまたはアクションが存在しないエラーと、その他の例外エラーで、それぞれメソッド単位で処理が定義されています。

通常は意識する必要はありませんが、エラー時の処理をユーザーが定義したい場合は、このクラスを継承した"ErrorHandler"という名前のクラスを定義し、コントローラーディレクトリに配置することで実現可能です。

Exceptionクラスを継承した例外クラスを作成し、そのクラス名の末尾のExceptionを除去したものを、メソッドの命名規則に従って変換した名前のメソッドをErrorHandlerに定義することで、その例外の発生時に実行される例外捕捉メソッドとして実行されます。

例えばFileNotExistsExceptionという名前のExceptionクラスを継承したクラスを定義し、このインスタンスをthrowした場合、ErrorHandlerにfileNotExistsというメソッドが存在すれば、これが実行されます。ない場合はerrorメソッドが実行されます。

クラスファイル位置

curry/core/error_handler_standard.php

フィールド

フィールド名 アクセス 概要
$response public Response Responseクラスのインスタンスを保持します。

※バージョン1.1.0以降
$request protected Request リクエスト情報を格納するRequestクラスのインスタンスです。
コントローラークラスの$requestと同様に扱えます。
$view protected ViewStandardまたはViewSmarty ビュークラスのインスタンスです。
コントローラークラスの$viewと同様に扱えます。
$exception protected ExceptionまたはExcetionの継承クラス 例外発生時の例外インスタンス

メソッド

メソッド名 アクセス 概要
error public 通常の例外発生時に呼び出されるメソッドです。
処理内容としては、error/error.php(tpl)のテンプレートを出力します。

任意の処理を行いたい場合はこのクラスを継承したErrorHandlerクラスで同名メソッドを定義します。

ちなみに通常の例外とは、このクラスの他のどのメソッドでも捕まらない例外です。通常のExceptionクラスのインスタンスとして投げられた例外は全てここに入ります。
notFound public 通常の例外発生時に呼び出されるメソッドです。
引数の指定により、HTTPレスポンスのステータスコードとして200を返すか404を返すかが変わります。

任意の処理を行いたい場合はこのクラスを継承したErrorHandlerクラスで同名メソッドを定義します。
pdo public PDOException発生時に実行されるメソッドです。データベースエラーの場合に実行されます。
処理内容はerrorメソッドと同様ですが、任意の処理を行いたい場合はこのクラスを継承したErrorHandlerクラスで同名メソッドを定義します。
redirect public サイト内の他のページへリダイレクトします。このメソッドでは他のドメインのサイトへのリダイレクトはできません。Controllerクラスのredirectメソッドと同様のメソッドです。
enableLogging public 引数でログキーを指定することで、全SQL実行履歴をログへ出力することができます。
ログキーは、Logger::setLogNameメソッドの第二引数で指定した、ログファイルに対するログキーです。指定したキーに対応するログファイルへSQL実行履歴が出力されます。