Функции, которые вызывают ошибки на основе уровня отчетности в PHP - PullRequest
0 голосов
/ 31 октября 2011

Это глупый вопрос, но я не могу обойтись без проверки битовой маски, связанной с выполнением этого:

Учитывая, что я создаю кучу обобщенных функций для расширения базы функций PHP:

/**
 *
 * @param string $path
 * @return array
 */
function load_array($path){
    $path = path_file($path);
    if(null === $path){
        // trigger error when appropriate
        return array();
    }
    return ((Array) require($path));
}

path_file() - это еще одна функция в библиотеке, просто предположим, что она равна realpath()

Что я хотел бы сделать, это ошибки триггера в соответствии ск уровню отчетности текущей рабочей среды.Учитывая, что это будет уведомление , я должен просто проверить:

if(error_reporting() <= E_USER_NOTICE){ /***/ }

Это не кажется правильным.

1 Ответ

1 голос
/ 31 октября 2011
if (error_reporting() & E_USER_NOTICE) {
   ...
}

будет срабатывать только в том случае, если в сообщении об ошибке включен флаг E_USER_NOTICE с использованием побитовой операции AND.

Если вы делаете вид, что флаг error_reporting составляет всего 8 бит, а флаг USER_NOTICE имеет бит 4, то вы делаете:

  00001000  <--- e_user_notice
  10101111  <--- some fake error_reporting bitmask
& --------
  00001000  <-- e_user_notice is enabled. It's non-zero, so evaluates to 'true' in PHP.
...