開発に推奨される error_reporting() 設定は何ですか?E_STRICTはどうでしょうか?

StackOverflow https://stackoverflow.com/questions/74847

  •  09-06-2019
  •  | 
  •  

質問

通常、私が使用するのは E_ALL コードを改善するために PHP がコードに関して何を言っているかを確認します。

エラー定数に気づきました E_STRICT, を使用したことも聞いたこともありませんが、これは開発に使用するのに適した設定ですか?マニュアルには次のように書かれています。

実行時の通知。PHP がコードへの変更を提案するように設定すると、コードの最高の相互運用性と上位互換性が保証されます。

それで、私は最高のものを使用しているかどうか疑問に思っています error_reporting と同じレベル E_ALL それともそれと一緒ですか E_STRICT 最善を尽くす?それとも、まだ学んでいない他の組み合わせがあるのでしょうか?

役に立ちましたか?

解決

PHP 5 でカバーされる内容は、 E_STRICT は対象外です E_ALL, したがって、最大限の情報を取得するには、それらを組み合わせる必要があります。

 error_reporting(E_ALL | E_STRICT);

PHP5.4では、 E_STRICT に含まれます E_ALL, したがって、次のように使用できます。 E_ALL.

も使用できます

error_reporting(-1);

これは常に有効になります 全て エラー。これは意味的には次のようにより正確です。

error_reporting(~0);

他のヒント

php.ini で以下を使用します。

error_reporting = E_ALL | E_STRICT

また、インストールする必要があります Xデバッグ, 、まばゆいばかりの明るい色で間違いを強調表示し、役立つ詳細情報を印刷できます。

たとえそれが無害であっても、コード内にエラーや通知を決して入れないでください。

私の意見では、開発段階でエラー報告レベルを高く設定するほど良いと思います。

ライブ環境では、わずかに (ほんの少しだけ) 縮小したセットが必要ですが、ユーザーからは見えない場所にログとして記録したいとします (私はそれを好みます)。 syslog).

http://php.net/error_reporting

E_ALL | E_STRICT PHP 5.2.0 より前の開発用。

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で修正される予定です...

新しい PHP バージョンでは、E_ALL にさらに多くのクラスのエラーが含まれます。PHP 5.3 以降、E_ALL にはすべてが含まれます を除外する E_STRICT。PHP 6 では、それさえも含まれると言われています。これは良いヒントです:表示されるエラー メッセージは少ないよりも多い方が良いです。

E_ALL に含まれるものについては、 PHP の事前定義定数 オンラインマニュアルのページ。

個人的には、E_STRICT を使用してもそれほど問題ないと思います。特に、PHP の将来のバージョンで壊れる可能性が低いスクリプトを作成できなくなる可能性があるため、特に害はありません。一方で、場合によっては、特に急いでいる場合には、厳格なメッセージがうるさすぎる場合があります。デフォルトでオンにして、煩わしい場合はオフにすることをお勧めします。

使用できます error_reporting = -1
常にすべてのビットで構成されます (E_ALL に含まれていない場合でも)。

このコードの長期サポート計画に応じて、次の方法でデバッグします。 E_STRICT 有効にすると、遠い将来でもコードが動作し続けるのに役立つかもしれませんが、日常的に使用するには過剰である可能性があります。重要なことが 2 つあります E_STRICT 心に留めておくべき:

  1. マニュアル通り, 、 ほとんど E_STRICT エラーは実行時ではなくコンパイル時に生成されます。エラーレベルを次のように上げている場合 E_ALL コード内で (経由ではなく) php.ini)、決して見ることはないかもしれません E_STRICT とにかくエラー。
  2. E_STRICT 内に含まれています E_ALL PHP 6 では使用できますが、PHP 5 では使用できません。サーバーを PHP6 にアップグレードし、 E_ALL 上記の #1 で説明したように設定すると、次のことが表示されます。 E_STRICT ユーザー側で追加の変更を必要とせずに、エラーを修正できます。

厳密に言うと、error_reporting ではありません。 強く 解析エラーや一般的な不具合 (条件内の代入など) を自動的に表示する IDE を使用することをお勧めします。

Zend Studio for Eclipse ではこの機能がデフォルトで有効になっており、使い始めてからずっと役に立っています。 たくさん エラーが発生する前にエラーをキャッチします。

たとえば、いくつかのデータをキャッシュしていた次のコードがありました。 $GLOBALS 変数ですが、うっかり書いてしまいました $_GLOBALS その代わり。データは決してキャッシュされませんでした。Zend が次のように教えてくれなかったら、私は知りませんでした。「ねえ、これ $_GLOBALS これは 1 回しか表示されないため、エラーである可能性があります。」

ini_set("表示エラー","2");ERROR_REPORTING(E_ALL);

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top