11
  • E_ALL8191に等しい(0001 1111 1111 1111
  • E_STRICT2048に等しい(0000 1000 0000 0000

それらを組み合わせるためのビットごとのORの使用:

1 1111 1111 1111
  1000 0000 0000

元の値とまったく同じ値を取得しE_ALLます。

1 1111 1111 1111

error_reporting(E_ALL | E_STRICT)同じことを簡単に実現できるとしたら、何をするのがポイントerror_reporting(E_ALL)ですか?

4

4 に答える 4

19

あなたが欲しい:

error_reporting(E_ALL | E_STRICT);

E_ALL含まれていませんE_STRICT(PHP 5.4以降を使用している場合を除く)。値が正しくありません。事前定義された定数 からE_ALL、次のように定義されます。

E_STRICTPHP 5.4より前のレベルを除く、サポートされているすべてのエラーと警告。

PHP 5.4.xでは32767、PHP 5.3.xでは30719、PHP 5.2.xでは6143、以前は2047

于 2009-10-28T16:05:18.883 に答える
3

1 | 1 = 1

考えられる最も簡単な答えは、現在、この2つをビット演算または演算と組み合わせる理由はないということですが、将来これらの定数を変更することを決定した場合は、そうなる可能性があります。

編集:そして、あなたはそれらの定数に対して間違った値を引き出したようで、質問全体が議論の余地があります。

于 2009-10-28T16:10:24.550 に答える
1

php.netから:

値-1を渡すと、将来のPHPバージョンで新しいレベルと定数が追加された場合でも、考えられるすべてのエラーが表示されます。PHP 5.4以降、E_ALL定数もこのように動作します。

于 2013-08-14T22:59:54.037 に答える
1

質問で提供されているビット値は一般的に間違っているわけではありませんが、5.4より古いバージョンのPHPの場合のみです。

PHP 5.4+

E_ALL含まれE_STRICTているので、以下を使用する必要があります。error_reporting(E_ALL);

Binary                  Name       Decimal
0001 1111 1111 1111     E_ALL      32767
0000 1000 0000 0000     E_STRICT   2048
----------------------------------------------------------------------
0001 1111 1111 1111     E_ALL | E_STRICT produces the same result as E_ALL

PHP 5.3

E_ALLが含まれていないE_STRICTため、以下を使用する必要があります。error_reporting(E_ALL | E_STRICT);

Binary                  Name       Decimal
0111 0111 1111 1111     E_ALL      30719
0000 1000 0000 0000     E_STRICT   2048
----------------------------------------------------------------------
0111 1111 1111 1111     E_ALL | E_STRICT produces a different value than E_ALL

PHP5.0から5.2まで

E_ALLが含まれていないE_STRICTため、次を使用する必要があります。error_reporting(E_ALL | E_STRICT);ただし、ビット値はPHP5.3の値とは異なります。

5.0より前のPHP

E_STRICT存在しないため、以下を使用する必要があります。error_reporting(E_ALL);

于 2018-12-08T18:40:47.097 に答える