E_ALL
равно 8191 ( 0001 1111 1111 1111
) E_STRICT
равен 2048 ( 0000 1000 0000 0000
) Использование побитового ИЛИ для их объединения:
1 1111 1111 1111 1000 0000 0000
Мы получаем то же значение, что и исходный E_ALL
:
1 1111 1111 1111
Какой смысл делать error_reporting(E_ALL | E_STRICT)
если мы можем просто сделать error_reporting(E_ALL)
чтобы получить то же самое?
Вы хотите:
error_reporting(E_ALL | E_STRICT);
E_ALL
не включает E_STRICT
(если вы не используете PHP 5.4+). Ваши значения неверны. Из предопределенных констант E_ALL
определяется как:
Все ошибки и предупреждения, поддерживаемые, за исключением уровня
E_STRICT
до PHP 5.4.32767 в PHP 5.4.x, 30719 в PHP 5.3.x, 6143 в PHP 5.2.x, 2047 ранее
1 | 1 = 1
Самый простой ответ заключается в том, что в настоящее время нет причин сочетать их с поразрядными или работающими, но если они когда-либо решат изменить эти константы в будущем, то может быть и так.
Изменить: и вы, кажется, потянули неправильные значения для этих констант, сделав весь вопрос спорным.
от php.net:
Передача значения -1 будет показывать все возможные ошибки, даже если новые уровни и константы будут добавлены в будущие версии PHP. Константа E_ALL также ведет себя так же, как и PHP 5.4.