E_ALL
equals 8191 (0001 1111 1111 1111
)E_STRICT
equals 2048 (0000 1000 0000 0000
)Using bitwise OR to combine them:
1 1111 1111 1111
1000 0000 0000
We get the exact same value as the original E_ALL
:
1 1111 1111 1111
What's the point of doing error_reporting(E_ALL | E_STRICT)
if we can simply do error_reporting(E_ALL)
to get the same thing?
The bit values provided in the question are not generally wrong but only for PHP versions older than 5.4.
E_ALL
includes E_STRICT
so you should use: 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
E_ALL
does not include E_STRICT
so you should use: 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
E_ALL
does not include E_STRICT
so you should use: error_reporting(E_ALL | E_STRICT);
but the bit values differ from the values in PHP 5.3.
E_STRICT
does not exist so you must use: error_reporting(E_ALL);
You want:
error_reporting(E_ALL | E_STRICT);
E_ALL
does not include E_STRICT
(unless you are using PHP 5.4+). Your values are incorrect. From Predefined Constants E_ALL
is defined as:
All errors and warnings, as supported, except of level
E_STRICT
prior to PHP 5.4.32767 in PHP 5.4.x, 30719 in PHP 5.3.x, 6143 in PHP 5.2.x, 2047 previously
1 | 1 = 1
The simplest answer possible is that there's presently no reason to combine the two with a bitwise or operation, but if they ever decide to change those constants in the future, then there might be.
Edit: and you seem to have pulled the wrong values for those constants, making the entire question moot.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With