phpmaster | PHPでのエラー処理
キーテイクアウト
- PHPエラー処理は、Webアプリケーションの整合性と機能を維持するために重要です。スクリプトの実行中に発生する可能性のある問題を特定して修正し、エラーが発生したときに表示されるものを制御することでユーザーエクスペリエンスを改善するのに役立ちます。 PHPは、ログや表示など、エラー処理用のいくつかの組み込み関数を提供します。また、エラーハンドラーを登録して例外を使用して、エラー処理戦略をカスタマイズする柔軟性を提供します。 PHPでのカスタムエラー処理は、set_error_handler()およびset_exception_handler()関数を使用して達成できます。これにより、開発者はカスタムエラー処理ルールと例外を定義できます。これは、ログのログエラーやエラー通知の送信に役立ちます。 PHPの例外は、スクリプトの実行中に発生するイベントであり、命令の通常の流れを妨害します。 Try、Catch、および最後にブロックすることを使用して処理できます。例外がスローされたときにキャッチブロックが見つからない場合、PHPは致命的なエラーを表示し、スクリプトの実行を停止します。
- PHPエラー報告レベル
- すべてのエラーと警告を記録する必要があります。エラーの重大度に基づいて、通知は他のシステム/チームに送信する必要があります。その重大度をより良く測定できるように、PHPはエラーの性質を記述するためにいくつかの組み込みのエラーレベルを提供します。各レベルは、整数値で表され、プログラマが使用できる名前の名前が付いています。以下の表は、公式のPHPドキュメントから撮影されており、さまざまなレベルの一部を示しています。
- レベルは、ビットオペレーターと一緒にマスクして、PHPの構成からそれらを含めるか、減算することができます。たとえば、E_ALL | E_STRICTを有効にして、E_STRICT(5.4より前のPHPのバージョンで必要)を追加して、すべてのエラーと警告を有効にします。 PHPは、ログと表示エラーの表示に関連するいくつかの構成ディレクティブを提供します。それらの価値は、一般に、システムが開発環境にあるのか、生産環境にあるのかによって異なります。この表は、エラー関連の指示の一部を示しています。
カスタムエラーハンドラーの作成
また、エンドユーザーに生のエラーを表示しないことも良い習慣です。表示されるエラーは、フレンドリーなカスタムエラーメッセージで抽象化する必要があります。 PHPは、エラーの表示と表示のための組み込み関数を提供するだけでなく、それらを上げるためにも提供します。 trigger_error()を使用して、特定のレベルのエラーを実用的にトリガーできます。たとえば、このコードは、$テストの値が1を超える場合、e_user_notice警告をトリガーします。<span><span><?php </span></span><span><span>$test = 5; </span></span><span><span>if ($test > 1) { </span></span><span> <span>trigger_error('Value of $test must be 1 or less', E_USER_NOTICE); </span></span><span><span>}</span></span>
handler(int $errno, string $errstr, string $errfile, int $errline, array $errcontext)
<span><span><?php </span></span><span><span>$test = 5; </span></span><span><span>if ($test > 1) { </span></span><span> <span>trigger_error('Value of $test must be 1 or less', E_USER_NOTICE); </span></span><span><span>}</span></span>
処理エラー
どんなにエラー処理フレームワークがありますが、実行時には常に問題が発生します。もちろん、これらのエラーがユーザーのブラウザに表示されたくありません。これは、例外処理が画像に入る場所です。例外を使用すると、エラーや例外的な状況を優雅に処理できます。 例外は、クラスのExcpetion(またはそのサブクラスのいずれか)によってPHPで表されます。それらはスローを使用して育てることができ、トライ/キャッチブロックを使用してキャッチすることができます。例外を拡張して、特定のエラーをトラップするためのカスタム例外タイプを作成できます。 例外をトリガーする可能性のあるコードはTryブロック内に配置され、例外を処理するコードはCatchブロック内に配置されます。次のスニペットを検討してください。handler(int $errno, string $errstr, string $errfile, int $errline, array $errcontext)
カスタム例外ハンドラーの作成
PHPでは、それが例外であるかのようにすべてのオブジェクトを投げることができますが、経験則として、例外はPHPの組み込み例外クラスを拡張する必要があります。オブジェクトのタイプに基づいて、例外を異なる方法で処理できます。カスタム例外処理は、ファイルでエラーメッセージを記録するなどの適切なアクションを実行し、呼び出しスタックなどを調べてエラーが発生した行の正確な詳細を提供します。この例をご覧ください。<span><span><?php </span></span><span><span>$test = 5; </span></span><span><span>if ($test > 1) { </span></span><span> <span>trigger_error('Value of $test must be 1 or less', E_USER_NOTICE); </span></span><span><span>}</span></span>
例外の再投与
トライ/キャッチブロックをネストできます。例外をキャッチし、そのプロパティの一部を見て、それを再度投げて、親がそれを処理するようにしたい場合があります。これは、多くの場合、エラーの状態を確認し、致命的かどうかを判断するのに役立ちます。この例コードは、例外の再投与を示しています。handler(int $errno, string $errstr, string $errfile, int $errline, array $errcontext)
excaught例外ハンドラー
set_error_handler()を使用すると、実行時間エラーを処理する関数を指定できる方法と同様に、set_exception_handler()関数は、キャッチブロックにキャッチされずにコールスタックを完全に上げる例外を処理できます。たとえば、例外がスタックをすべて上に上げた場合、ログファイルにログインすることをお勧めします。以下の例に示すように、コールバック関数を作成し、set_exception_handler()に登録できます。<span><span><?php </span></span><span><span>function errorHandler($errno, $errstr, $errfile, $errline) { </span></span><span> <span>static $db; </span></span><span> <span>if (empty($db)) { </span></span><span> <span>$db = new PDO(DSN, DBUSER, DBPASS); </span></span><span> <span>} </span></span><span> </span><span> <span>$query = "INSERT INTO errorlog (severity, message, filename, lineno, time) VALUES (?, ?, ?, ?, NOW())"; </span></span><span> <span>$stmt = $db->prepare($query); </span></span><span> </span><span> <span>switch ($errno) { </span></span><span> <span>case E_NOTICE: </span></span><span> <span>case E_USER_NOTICE: </span></span><span> <span>case E_DEPRECATED: </span></span><span> <span>case E_USER_DEPRECATED: </span></span><span> <span>case E_STRICT: </span></span><span> <span>$stmt->execute(array("NOTICE", $errstr, $errfile, $errline)); </span></span><span> <span>break; </span></span><span> </span><span> <span>case E_WARNING: </span></span><span> <span>case E_USER_WARNING: </span></span><span> <span>$stmt->execute(array("WARNING", $errstr, $errfile, $errline)); </span></span><span> <span>break; </span></span><span> </span><span> <span>case E_ERROR: </span></span><span> <span>case E_USER_ERROR: </span></span><span> <span>$stmt->execute(array("FATAL", $errstr, $errfile, $errline)); </span></span><span> <span>exit("FATAL error <span><span>$errstr</span> at <span>$errfile</span>:<span>$errline</span>"</span>); </span></span><span> </span><span> <span>default: </span></span><span> <span>exit("Unknown error at <span><span>$errfile</span>:<span>$errline</span>"</span>); </span></span><span> <span>} </span></span><span><span>} </span></span><span> </span><span><span>set_error_handler("errorHandler"); </span></span><span> </span><span><span>$test = 5; </span></span><span><span>if ($test > 1) { </span></span><span> <span>trigger_error("Value of <span><span>$test</span> must be 1 or less"</span>, E_USER_NOTICE); </span></span><span><span>}</span></span>
要約
PHPは、ロギングや表示など、エラー条件を処理するためのさまざまな組み込み関数を提供します。また、エラーハンドラーを登録して例外を使用して、エラー処理戦略をカスタマイズする柔軟性を提供します。エラーは人生の事実ですが、この記事で私が提示した情報が、より優雅にそれらを処理するのに役立つことを願っています。 Ilya Andriyanov / Shutterstock 経由の画像 phpでのエラー処理に関するよくある質問(FAQ)
PHPでのエラー処理の重要性は何ですか?PHPでのエラー処理は、Webアプリケーションの整合性と機能を維持するために重要です。開発者は、スクリプトの実行中に発生する可能性のある問題を特定して修正するのに役立ちます。適切なエラー処理がなければ、小さな問題は、アプリケーションのクラッシュやユーザーに機密情報を公開するなど、重大な問題を引き起こす可能性があります。また、ユーザーエクスペリエンスが改善されます。これにより、開発者は、混乱するエラーメッセージを表示するのではなく、ユーザーがエラーが発生したときに見えるものを制御できるようになります。PHPはデフォルトでエラーをどのように処理しますか?
デフォルトでは、PHPはサーバーのエラーログにエラーレポートを送信し、画面にエラーメッセージを表示します。この動作は、ユーザーに機密情報を明らかにすることができるため、ライブWebサイトには理想的ではありません。したがって、ライブWebサイトのデフォルトのエラー処理設定を変更することをお勧めします。
PHPのさまざまなタイプのエラーは何ですか?
PHPは、致命的なエラー、警告、解析エラー、通知など、エラーをいくつかのタイプに分類します。致命的なエラーは、存在しない関数を呼び出したり、書くことができないファイルに書き込むなど、重大なエラーです。警告は、スクリプトの実行を続けることを可能にする非致命的なエラーです。解析エラーは、スクリプトに構文ミスがある場合に発生します。通知は、PHPがスクリプトの実行中に遭遇するマイナーなエラーまたは可能なエラーです。これらの機能により、カスタムエラー処理ルールと例外を定義できます。エラーを処理するカスタム関数を指定できます。これは、エラーのロギングやエラー通知の送信に役立ちます。
PHPの例外は何ですか?
例外は、スクリプトの指示の通常のフローを破壊するスクリプトの実行中に発生するイベントです。例外がスローされると、PHPはスクリプトの実行を停止し、例外を処理するためのキャッチブロックを探し始めます。キャッチブロックが見つからない場合、PHPは致命的なエラーを表示し、スクリプトの実行を停止します。 Tryブロックには、例外をスローする可能性のあるコードが含まれています。 Catchブロックには、例外を処理するコードが含まれています。最後にブロックには、例外がスローされたかどうかに関係なく実行されるコードが含まれています。エラーはPHPエンジンによって処理され、エラー報告設定とカスタムエラーハンドラーを使用して制御できます。一方、例外はスクリプトによって処理され、try、catch、および最後にブロックを使用して制御できます。ただし、ライブWebサイトにはエラーレポートをオフにすることは、問題を特定して修正することを困難にする可能性があるため、推奨されません。 PHPで式に加えられた場合、その式によって生成される可能性のあるエラーメッセージは無視されます。
以上がphpmaster | PHPでのエラー処理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

セッションハイジャックは、次の手順で達成できます。1。セッションIDを取得します。2。セッションIDを使用します。3。セッションをアクティブに保ちます。 PHPでのセッションハイジャックを防ぐための方法には次のものが含まれます。1。セッション_regenerate_id()関数を使用して、セッションIDを再生します。2。データベースを介してストアセッションデータを3。

php8.1の列挙関数は、指定された定数を定義することにより、コードの明確さとタイプの安全性を高めます。 1)列挙は、整数、文字列、またはオブジェクトであり、コードの読みやすさとタイプの安全性を向上させることができます。 2)列挙はクラスに基づいており、トラバーサルや反射などのオブジェクト指向の機能をサポートします。 3)列挙を比較と割り当てに使用して、タイプの安全性を確保できます。 4)列挙は、複雑なロジックを実装するためのメソッドの追加をサポートします。 5)厳密なタイプのチェックとエラー処理は、一般的なエラーを回避できます。 6)列挙は魔法の価値を低下させ、保守性を向上させますが、パフォーマンスの最適化に注意してください。

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

phpstormでCLIモードをデバッグする方法は? PHPStormで開発するときは、PHPをコマンドラインインターフェイス(CLI)モードでデバッグする必要がある場合があります。

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。
