Следующий код:
$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