Yii2 を使用すると、プログラムでエラーが発生すると、Yii2 は専用のエラー プロンプト インターフェースを自動的に表示できることがわかりました。これは、開発時に表示されるエラー プロンプト インターフェースとはまったく異なります。オリジナルの生態を書きました。
それはどのように行われますか: 監視はどこに設定されますか?またはどこで try catch を使用しますか? (推奨学習: yii Framework)
実は、PHP には専用のエラー処理 API があり、プログラムに問題が発生したときに、指定された関数を自動的に呼び出すことができます。 Yii2 はこれを利用し、起動時に PHP の組み込み set_error_handler を使用して独自のエラー処理を登録し、PHP 独自のエラー表示をオフにします。
公式チュートリアルでは、カスタム エラーを有効にするには、コンポーネントを次のように設定する必要があることが示されています:return [ // ... 'components' => [ // ... 'errorHandler' => [ 'errorAction' => 'site/error', ], ] // ... ];
Yii2 の場合 エラーのカスタマイズ処理では、Yii2 のエラー登録の原理を理解し、エラーが発生した後、Yii2 が yii\web\ErrorHandler クラス オブジェクトの handleException メソッドと handleError メソッドを呼び出すことがわかります。
実際には、yii\web\ ErrorHandler クラスには handleException メソッドと handleError メソッドはありませんが、その基本クラス yii\base\ErrorHandler にはあります。これら 2 つの関数は、最終的に yii\web\ErrorHandler の renderException メソッドを呼び出します。コードは次のとおりです:# yii\web\ErrorHandler /** * Renders the exception. * @param \Exception $exception the exception to be rendered. */ protected function renderException($exception) { // ... // 注意:控制错误是否能自定义的关键 // !YII_DEBUG 表示了如果你现在是在 Debug 模式下,那么不能自定义错误 // 即使你配置了组件的 'errorHandler' => ['errorAction' => 'site/error'] 参数 $useErrorView = $response->format === Response::FORMAT_HTML && (!YII_DEBUG || $exception instanceof UserException); // 传递到自定义错误处理方法 if ($useErrorView && $this->errorAction !== null) { $result = Yii::$app->runAction($this->errorAction); if ($result instanceof Response) { $response = $result; } else { $response->data = $result; } } // ... }
以上がyii2 カスタムエラー処理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。