ロジック
- データの検証:言い換えると、入力データのエラー、フィールドの形式が同じではなく、フィールドが入力されていない、フィールドの一意性のエラーが入力データのすべてのエラーである場合、そのような場合、ユーザーに表示されるすべてのフィールドとエラーをリストする実行をドロップします。
- 404ドキュメントが見つかりませんでした:特定のエンティティ(たとえば、データベースからの行)がその識別子によって(だけでなく)要求された場合、存在しない場合、実行がスローされ、後でページ404に変わります。
- 403アクセスが拒否されました:アクセスできないユーザーにアクセスしようとした場合、実行がスローされ(アクセスできない理由を引数に渡すことができます)、後で403に変わります。
- 401認証が必要:ユーザーは認証が必要なデータを要求します。 実行を破棄し(引数でRelarm-承認要求のテキストを渡すことができます)、ユーザーはHTTP承認の要求または通常のフォームを受け取ります。
- 301リダイレクト:リダイレクトする必要がありますか? 実行をスローします-その中で、リダイレクトする必要がある場所に転送します。
間違い
- 致命的なエラー:ここではすべてが明らかであるか、データベースへの接続がないか、構成を読み取ることができません。 ログに書き込み、損傷を表示するだけです。
- 重大なエラー:たとえば:SMSkaが送信されず、ファイルをアップロードできません-特定の実行をスローします。 そして、適切な場所(たとえば、電話の確認)で、それを処理し、SMSを送信できないことをユーザーに書き込みます。
デバッグ
デバッグモードでは、 PHP_Exceptionizerを使用します ( ここで説明します )。 コードをきれいにし、通知や警告を受信に変えることができます。これにより、それらを見逃すことがなくなります。 当然、これはデバッグモードでのみ有効になります。
例
また、「誤解された」すべての実行を記録することをお勧めします。
class Controller_Front
{
//
public function execute()
{
try {
...
//
try {
... //
// .
throw new Controller_RedirectException( 'http://habr.ru' );
...
} catch (Controller_DataException $e) {
//
$ this ->errors = $e->getErrors();
}
...
} catch (Controller_RedirectException $e) {
// ,
$ this ->_processRedirectException($e);
} catch (Controller_AuthException $e) {
// , HTTP
$ this ->_processAuthException($e);
} catch (Exception $e) {
// .
$ this ->_logException($e);
// .
$ this ->_processFatalException($e);
}
}
}
* This source code was highlighted with Source Code Highlighter .