エラー定数の中身はビット値
状態:-
閲覧数:1,656
投稿日:2016-08-04
更新日:2016-09-18
var_dump();で確認可能 :
・ビット値は、バージョンによって変更を余儀なくされるため、出来るだけPHPの定義済み定数 を利用した方が良い
・但し、E_ALLのように、バージョンによって中身が変わるものがあるため注意が必要
・これは恐らく、バージョンによって、新たなエラー定数が増えることもあるため、それを網羅していった結果だと思われる
前提環境PHP 5.2.5
・PHP 5.4.x → 32767
・PHP 5.3.x → 30719
・PHP 5.2.x → 6143
・それ以前のバージョン→ 2047
・ビット値は、バージョンによって変更を余儀なくされるため、出来るだけPHPの定義済み定数 を利用した方が良い
・但し、E_ALLのように、バージョンによって中身が変わるものがあるため注意が必要
・これは恐らく、バージョンによって、新たなエラー定数が増えることもあるため、それを網羅していった結果だと思われる
※E_ALL値は、環境によって異なる
前提環境PHP 5.2.5
・PHP 5.4.x → 32767
・PHP 5.3.x → 30719
・PHP 5.2.x → 6143
・それ以前のバージョン→ 2047
エラーレベル一覧(E_ALLベース)
エラーレベル一覧(E_ALLベース)
一覧
ビット値 | 2進数 | 定数 | 説明 | 導入バージョン |
---|---|---|---|---|
2048 | 0000 1000 0000 0000 | E_STRICT | コードの相互運用性や互換性を維持するために PHP がコードの変更を提案 | PHP 5 |
6143 | 0001 0111 1111 1111 | E_ALL | E_STRICTとE_DEPRECATEDを除いたすべてのエラー定数のビットをもつ定数 | - |
8192 | - | E_DEPRECATED | 実行時の注意。これを有効にすると、 将来のバージョンで動作しなくなるコードについての警告を受け取ることができる | PHP 5.3.0 |
エラーレベル一覧(error_reportingの設定)
error_reportingの設定
エラーレベルを示す文字列または値で指定
・ビット演算子(|→OR、&→AND、^→XOR、~・!→NOT)を用いて組み合わせた指定や特定エラーだけを出なくするような指定も可能
phpのオプションでビット演算を使う場合
下記の設定は E_ALL に E_STRICT が含まれるかどうかで変わります。
error_reporting(E_ALL &~ E_STRICT);
error_reporting(E_ALL ^ E_STRICT);
例えば E_ALL ^ E_NOTICE は E_ALL に E_NOTICE が含まれるので E_ALL から E_NOTICE を引いた値(E_ALL &~ E_NOTICE と同じ)になり E_ALL ^ E_STRICT は E_ALL に E_STRICT が含まれないので E_ALL | E_STRICT と同じ値になります。
php6 から E_ALL が E_STRICT を含むらしいので注意が必要です。
よって error_reporting に排他的論理和を使うのをやめることをお勧めします
error_reporting(E_ALL &~ E_STRICT);
error_reporting(E_ALL ^ E_STRICT);
例えば E_ALL ^ E_NOTICE は E_ALL に E_NOTICE が含まれるので E_ALL から E_NOTICE を引いた値(E_ALL &~ E_NOTICE と同じ)になり E_ALL ^ E_STRICT は E_ALL に E_STRICT が含まれないので E_ALL | E_STRICT と同じ値になります。
php6 から E_ALL が E_STRICT を含むらしいので注意が必要です。
よって error_reporting に排他的論理和を使うのをやめることをお勧めします
一覧
ビット値 | 2進数 | 設定 | 報告(出力)するエラー内容 | 簡易計算(実際はビット処理) |
---|---|---|---|---|
0 | - | 0 | なし(全てのエラー出力をオフにする) | - |
6143 | 0001 0111 1111 1111 | E_ALL | E_STRICTとE_DEPRECATEDを除いたすべてのエラー定数のビットをもつ定数 | - |
6143 | 0001 0111 1111 1111 | E_ALL &~ E_STRICT | E_STRICTとE_DEPRECATED以外のエラー。E_ALLにE_STRICTは含まれていないので、引けない。あるいは、「何もない」を引くので、結果、E_ALLと同じになる | - |
2048 | 0000 1000 0000 0000 | E_STRICT | - | - |
8191 | 0001 1111 1111 1111 | E_ALL ^ E_STRICT | DEPRECATED 以外のエラー | E_ALL値「6143」+E_STRICT値「2048」 |
8 | 0000 0000 0000 1000 | E_NOTICE | - | - |
6135 | 0001 0111 1111 0111 | E_ALL &~ E_NOTICE | 「E_NOTICE」、「E_STRICT」、「E_DEPRECATED」以外のエラー。E_ALL から E_NOTICE だけを NOT AND でマスク | E_ALL値「6143」+(-E_NOTICE値「8」) |
6135 | 0001 0111 1111 0111 | E_ALL ^ E_NOTICE | 「E_NOTICE」、「E_STRICT」、「E_DEPRECATED」以外のエラー。※E_NOTICEは、E_ALLの中に含まれているため | E_ALL値「6143」+(-E_NOTICE値「8」) |
ビット演算子
ビット演算子
比較一覧表
名称 | 表記 | 説明(各桁 (ビット単位) で、) | 具体 | 例 | ベン図 |
---|---|---|---|---|---|
論理積 | $x & $y | 両方 「1」 の場合 「1」、 どちらかが 「0」 の場合 「0」 |
$x $y $x & $y |
1011 1101 1001 |
|
論理和 | $x | $y | どちらかが 「1」 の場合 「1」、 両方 「0」 の場合 「0」 |
$x $y $x & $y |
1010 1100 1110 |
|
排他的論理和 | $x ^ $y | 等しい場合 「0」、 異なる場合 「1」 |
$x $y $x ^ $y |
1010 1100 0110 |
|
否定 | ~$x | ビットを反転 | $x ~$x |
1010 0101 |
エラーレベル一覧(詳細)
一覧
ビット値 | 2進数 | 定数 | 説明 | - |
---|---|---|---|---|
1 | 0000 0000 0000 0001 | E_ERROR | 致命的な実行時のエラーを出力(メモリ確保に関する問題のように復帰不能なエラー)。スクリプトの実行は中断される | - |
2 | 0000 0000 0000 0010 | E_WARNING | 実行時の警告を出力。スクリプト実行は中断されない | - |
4 | - | E_PARSE | コンパイル時の構文解析エラーを出力 | - |
8 | 0000 0000 0000 1000 | E_NOTICE | 実行時の情報を出力 | - |
16 | - | E_CORE_ERROR | PHPの初期動作時点で起きる致命的なエラーを出力 | - |
32 | - | E_CORE_WARNING | PHPの初期動作時点で起きる警告を出力 | - |
64 | - | E_COMPILE_ERROR | 致命的なコンパイル時のエラーを出力 | - |
128 | - | E_COMPILE_WARNING | コンパイル時の警告を出力 | - |
256 | - | E_USER_ERROR | ユーザーが用意(定義)したエラーを出力 | - |
512 | - | E_COMPILE_WARNING | ユーザーが用意(定義)した警告を出力 | - |
1024 | - | E_USER_NOTICE | ユーザーが用意(定義)した情報を出力 | - |
2048 | 0000 1000 0000 0000 | E_STRICT | コード互換性のための情報を出力(PHP5構文を強制) | - |
4096 | - | E_RECOVERABLE_ERROR | 回復可能な実行時のエラーを出力 | - |
6143 | 0001 0111 1111 1111 | E_ALL | 環境によって異なる。PHP 5.4.x → 32767、 PHP 5.3.x → 30719、 PHP 5.2.x → 6143、 それ以前のバージョン→ 2047 | - |