Баг с error_reporting?

korpus

злой бобёр
Баг с error_reporting?

Обнаружил, что уровень отображения ошибок отличается, если он выставлен в файле php.ini от уровня ошибок, который выставляется в скриптах методами error_reporting() и ini_set().

Установка уровня ошибок в php.ini таким образом:

error_reporting = E_ALL | E_STRICT & ~E_WARNING
error_reporting =E_ALL & ~E_WARNING | E_STRICT

оба раза даёт один и тот же результат 8189. Что на мой взгляд правильно (проверял с помощью phpinfo(); )

Когда же выставляю уровень ошибок в скриптах таки образом:
Код:
// Вариант 1
error_reporting(E_ALL | E_STRICT & ~E_WARNING); 
echo ini_get('error_reporting'); //выводит 8191 (будто и нет в конце значения & ~E_WARNING)
Код:
// Вариант 2
error_reporting(E_ALL & ~E_WARNING | E_STRICT);
echo ini_get('error_reporting'); //выводит 8189 (правильный результат)
Вариант 1 устанавливает некорректный уровень ошибок. Это что, баг?
У меня php5.2.4
 

mity

Новичок
Скобки расставьте и будет Вам счастье
PHP:
error_reporting((E_ALL | E_STRICT) & (~E_WARNING));
-~{}~ 21.05.10 19:36:

Приоритет у & | ~ просто разный
 

korpus

злой бобёр
В php.ini скобок не было, а результат всегда получался одинаковым.
 

fixxxer

К.О.
Партнер клуба
php.ini это ини-парсер, а не язык php ;)

а если уж углубляться, то основная проблема то в том что реализацию в виде битовой маски вынесли наружу. надо было set или collection делать.

хотя... такого типа данных в php тоже нет... упс. :D
 
Сверху