CakePHP は、多くの便利な機能を提供する人気のある PHP フレームワークであり、そのうちの 1 つは例外処理です。開発プロセス中に、例外をカスタマイズする必要がある状況に遭遇することがあります。この記事では、CakePHPでカスタム例外を作成する方法を紹介します。
1. 例外処理の基本
CakePHP では、例外処理は CakeErrorExceptionRenderer
クラスを通じて実装されます。フレームワークは例外をキャッチすると、例外インスタンスを ExceptionRenderer
クラスに渡します。このクラスは、例外をレンダリングし、適切なエラー メッセージをユーザーに表示するための便利なメソッドをいくつか提供します。
2. カスタム例外の作成方法
カスタム例外クラスを作成するには、ビルドされたクラスを拡張する必要があります。 -inException
クラスを開き、__construct()
メソッドに適切なメッセージとコードを設定します。たとえば、MyException
という名前のカスタム例外クラスの例を次に示します。
namespace AppException; use CakeCoreExceptionException; class MyException extends Exception { public function __construct() { parent::__construct('My custom exception message', 500); } }
上記の例では、例外メッセージと HTTP ステータス コード 500 を親クラス コンストラクターに渡しました。
カスタム例外をスローするには、他の例外と同様に throw
ステートメントを使用します。たとえば、MyException
例外をスローする例を次に示します。
throw new AppExceptionMyException();
上記の例では、throw
キーワード #MyException を使用して ## を作成し、スローしました。 ###物体。
クラスに渡し、エラーを処理して表示します。 ExceptionRenderer
クラスのサブクラスにカスタム ハンドラーを追加して、カスタム例外を処理できます。たとえば、AppExceptionRenderer
という名前のカスタム例外レンダラー クラスの例を次に示します。 <pre class='brush:php;toolbar:false;'>namespace AppError;
use CakeErrorExceptionRenderer;
class AppExceptionRenderer extends ExceptionRenderer
{
public function render()
{
if ($this->error instanceof AppExceptionMyException) {
// 自定义处理程序
$response = $this->controller->response;
$response = $response->withStatus(400);
$response->type('json');
$response->body(json_encode(['error' => $this->error->getMessage()]));
return $response;
}
// 未知异常处理程序
return parent::render();
}
}</pre>
上記の例では、例外の種類が
であるかどうかを確認します。その場合、カスタム JSON エラー メッセージを応答に追加し、応答を返します。それ以外の場合は、親クラスの render()
メソッドを呼び出して例外を処理します。
ファイルに次の行を追加します。 <pre class='brush:php;toolbar:false;'>Configure::write('Error.exceptionRenderer', 'AppErrorAppExceptionRenderer');</pre>
上記の例では、
Configure クラスを使用します。エラー
カスタム例外レンダラー クラスの完全修飾クラス名は、構成で設定されます。 カスタム例外がスローされると、CakePHP は
クラスで定義されたカスタム ハンドラーを呼び出して、エラーをレンダリングして表示します。 概要
この記事では、CakePHP でカスタム例外を作成および処理する方法を紹介しました。カスタム例外を使用すると、アプリケーションのエラー処理とユーザー エクスペリエンスを向上させることができます。この記事が、例外処理と CakePHP でのカスタム例外の作成方法をよりよく理解するのに役立つことを願っています。
以上がCakePHP でカスタム例外を作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。