アプリケーション ロジックに大量のエラーが発生するのを回避し、isset()
必要に応じてデバッグ メッセージ (E_NOTICE) を表示する機能を保持するためのより良い方法はどれですか?
最初の仮定: E_NOTICE はエラーではありません。これは誤称であり、実際には E_DEBUG である必要があります。ただし、これは設定されていない変数 (PHP は依然としてスクリプト言語です) には当てはまりますが、一部のファイル システム関数などもそれらをスローします。したがって、E_NOTICEs をオンにして開発することが望ましいです。
しかし、すべてのデバッグ通知が役立つわけではありません。そのため、アプリケーション ロジック全体で @を導入するのが一般的な (残念ながら) PHP のイディオムです。isset()
確かに、isset/empty には多くの有効な使用例がありますが、全体的には構文ソルトのように見え、実際にデバッグを妨げる可能性があります。
そのため、現在、error_reporting ブックマークレットとダムのオン/オフ スイッチを使用しています。
// javascript:(function(){document.cookie=(document.cookie.match(/error_reporting=1/)?'error_reporting=0':'error_reporting=1')})()
if (($_SERVER["REMOTE_ADDR"] == "127.0.0.1")
and $_COOKIE["error_reporting"])
{
error_reporting(E_ALL|E_STRICT);
}
else {/* less */}
ただし、それでも、一度有効にすると検索するには通知が多すぎるという問題が残ります. 回避策として、@ エラー抑制演算子を利用できます。isset() とは異なり、カスタム エラー ハンドラは抑制された E_NOTICE を引き続き受け取る可能性があるため、デバッグ オプションを完全に削除するわけではありません。そのため、予想されるデバッグ通知を潜在的な問題から切り離すことが役立つ場合があります。
しかし、それは同様に満足のいくものではありません。したがって、質問です。より洗練された PHP エラー ハンドラを使用している、または知っている人はいますか。私は次のことを想像しています:
- フィルター処理されていないエラー/警告/通知を出力します (CSS 絶対配置で?)
- クライアント側の検査と抑制を可能にするAJAX-whatnot
- だけでなく、予想される「承認された」通知または警告のフィルタリング リストも保存します。
確かに、一部のフレームワークには、そのようなユーザー エラー ハンドラーが既にあるはずです。
- 基本的には注意・告知管理に興味があります。
- 完全な E_NOTICE 抑制は実際には望ましくありません。
- E_NOTICESを募集しています。それらの数が少ないだけです。デフォルトでは、期待されるものではなく、私が気にする可能性のあるものを強調表示します。
- ?order= パラメータなしで実行すると、予想される NOTICE が発生します。当然のことながら、何度も通知する必要はありません。
- ただし、完全なデバッグ モードでは、上記のデバッグ通知の存在 (または、より興味深いことに不在) を通じて、未定義の変数の存在を確認したいと考えています。-> そのためにあると思います。isset を回避すると、言語暗黙の print ステートメントが発生します。
- また、これは通常の PHP フォーム処理セマンティクスが適しているユース ケースに関するものであり、厳密さが必須であるアプリケーション領域ではないことも理解してください。
ああ、誰かこれを書き直すのを手伝ってください。長い説明は失敗します。