通常、私はE_ALL
を使用して、コードを改善するためにPHPがコードについて言う可能性のあるものをすべて確認します。
エラー定数E_STRICT
に気づきましたが、使用したことも聞いたこともありません。これは開発に使用するのに適した設定ですか?マニュアルには次のように書かれています。
実行時の通知。 PHPコードの変更を提案して、コードの最高の相互運用性と上位互換性を確保できるようにします。
だから私はerror_reporting
で最高のE_ALL
レベルを使用しているのか、それともE_STRICT
と一緒にそれが最高でしょうか?それとも、私がまだ学んでいない他の組み合わせはありますか?
PHP 5では、E_STRICT
でカバーされているものはE_ALL
でカバーされていないため、ほとんどの情報を取得するには、それらを組み合わせる必要があります。
error_reporting(E_ALL | E_STRICT);
PHP 5.4では、E_STRICT
はE_ALL
に含まれるため、E_ALL
だけを使用できます。
使用することもできます
error_reporting(-1);
これは常にallエラーを有効にします。これは、次のようにより意味的に正しいです:
error_reporting(~0);
Php.iniで以下を使用します。
error_reporting = E_ALL | E_STRICT
また、インストールする必要があります Xdebug 、それは明るい色を盲目にすることであなたのエラーを強調し、有用な詳細情報を印刷することができます。
無害であっても、コードにエラーや通知を入れないでください。
私の意見では、開発段階でエラー報告レベルを高く設定するほど良いと思います。
ライブ環境では、わずかに(ただしわずかに)削減されたセットが必要ですが、ユーザーが見ることができない場所にログを記録する必要があります(私はsyslog
を好みます)。
http://php.net/error_reporting
5.2.0より前のPHP)での開発用のE_ALL | E_STRICT
。
5.2ではE_RECOVERABLE_ERROR
が導入され、5.3ではE_DEPRECATED
とE_USER_DEPRECATED
が導入されています。これらのバージョンのいずれかを実行している場合は、これらをオンにすることをお勧めします。
マジックナンバーを使用したい場合は、error_reporting
値を2^n-1
のかなり高い値(たとえば16777215
)に設定するだけで、実際には1..n
の間のすべてのビットがオンになります。しかし、マジックナンバーを使用するのは良い考えではないと思います...
私の意見では、PHPは、E_ALL
がすべてではないため、ボールを少し落としました。しかし、明らかにPHP 6 .. ..
error_reporting = -1
を使用できます
常にすべてのビットで構成されます(E_ALLにない場合でも)
新しいPHPバージョンでは、E_ALLにはより多くのクラスのエラーが含まれます。PHP 5.3なので、E_ALLにはを除くすべてが含まれますE_STRICT。PHP 6では、それも含まれていると言われています。これは良いヒントです。エラーメッセージを少なくするよりも多く見る方がよいでしょう。
E_ALLに含まれるものは、オンラインマニュアルの PHPで定義された定数 ページに記載されています。
個人的には、E_STRICTを使えばそれほど問題ではないと思います。特に、将来のバージョンのPHPで破損する可能性がわずかにあるスクリプトを作成できなくなる可能性があるため、害はありません。一方、厳密なメッセージは、特に急いでいる場合は特に、ノイズが多すぎる場合があります。デフォルトでオンにし、煩わしい場合はオフにすることをお勧めします。
このコードの長期サポート計画によっては、E_STRICT
を有効にしてデバッグすると、コードが遠い将来も機能し続けるのに役立つ場合がありますが、日常の使用にはおそらくやり過ぎです。 E_STRICT
について覚えておくべき2つの重要なことがあります。
E_STRICT
エラーは、実行時ではなくコンパイル時に生成されます。コード内でエラーレベルをE_ALL
に増やしている場合(php.ini経由ではない)、E_STRICT
とにかくエラー。E_STRICT
はE_ALL
内にPHP 6の下に含まれますが、PHP 5の下には含まれません。上記の#1で説明したようにE_ALL
を構成すると、追加の変更を必要とせずにE_STRICT
エラーが表示されるようになります。Error_reportingについて厳密に言えば、私は強く解析エラーと一般的なグリッチ(条件の割り当てなど)を自動的に表示するIDE)を使用することをお勧めします。
Zend Studio for Eclipseでは、この機能がデフォルトで有効になっています。使用を開始してから、エラーが発生する前にエラーをキャッチするのに役立ちました大いに。
たとえば、このコードでは、データを$GLOBALS
変数にキャッシュしていましたが、誤って$_GLOBALS
と記述していました。データがキャッシュされることはなく、Zendが「ねえ、この$_GLOBALS
は一度しか表示されないので、エラーの可能性があります」と言わなかったかどうかはわかりませんでした。