PHPでの重大なエラーの処理に関する記事に触発されました。 PHPのエラーコードはビット操作のために特別に強化されているにもかかわらず、記事の例とコメントでは、エラーコードのチェックに通常の比較演算子が使用されていることに気付きました。
たとえば、次のようなオプションがありました。
if ($error['type'] == E_ERROR || $error['type'] == E_PARSE || $error['type'] == E_COMPILE_ERROR){…}
if(in_array($error['type'], array(E_ERROR, E_PARSE, E_COMPILE_ERROR)) {…}
.
() . , , ().
5 ,
00000101.
6 :
$a & $b — ( , $a $b)
$a | $b — ( , $a $b)
$a ^ $b — ( $a $b, )
~$a — (, 1 0, )
$a << $b — ( $a $b)
$a >> $b — ( $a $b)
, .
: , , , . 4 , 4- , 1 — , , 0 — . .

:
define('U_READ', 1 << 0);
define('U_CREATE', 1 << 1);
define('U_EDIT', 1 << 2);
define('U_DELETE', 1 << 3);
define('U_ALL', U_READ | U_CREATE | U_EDIT | U_DELETE);
.
$user_perm = U_READ;
.
$user_perm = U_READ | U_DELETE;
.
$user_perm = U_ALL;
, .
$user_perm = U_ALL ^ U_DELETE;
$user_perm = U_ALL & ~ U_DELETE;
, , 1, 0, . 0, .
, , .. .
.
if($user_perm & U_READ)
,
if($user_perm & ( U_READ | U_DELETE ))
- ,
$user_perm &= ~ U_DELETE;
. , :
if($error['type'] & ( E_ERROR | E_PARSE | E_COMPILE_ERROR )) {…}
P.S.: , , PHP.
:
WikipediaPHP