Следующий код:
$a["x"];//should trigger notice var_dump(error_get_last());//return the error array
отлично работает и возвращает массив ошибок. но когда я использую set_error_handler, он возвращает null
function _do_nothing(){} set_error_handler('_do_nothing'); $a["x"];//should trigger notice var_dump(error_get_last());//return null
Этот код отлично работает на PHP5.4. Я изменил 3 месяца назад на PHP7, и с тех пор я получаю nulls в error_get_last()
Я использую функцию выключения, чтобы проверить, произошла ли ошибка, и если это так, чтобы отправить ее разработчику.
Это нормальное поведение, потому что в вашем примере ошибка уже обрабатывается _do_nothing()
, поэтому error_get_last()
возвращает null
если вы удалите set_error_handler('_do_nothing')
ошибка больше не будет обрабатываться, и вы снова получите последнюю ошибку
function _do_nothing(){} //set_error_handler('_do_nothing'); $a["x"];//should trigger notice var_dump(error_get_last());//return array() "Undefined variable: a"
Такое поведение в PHP5 аналогично, как и в PHP7