Невозможно настроить обработчик ошибок для выдачи исключения ErrorException в PHP-8
В моем скрипте есть следующий код:
set_error_handler(function(int $severity, string $message, string $filename, int $lineNumber) : void {
throw new ErrorException($message, 0, $severity, $filename, $lineNumber);
});
function test() : string {
return $test;
}
test();
Запуск сценария на PHP 7.3.11 (на macOS 10.15.7) работает должным образом и показывает следующее:
Неустранимая ошибка: Uncaught ErrorException: неопределенная переменная: тест в.../index.php:9 Трассировка стека:
#0... / index.php (9): {closure} (8, 'Неопределенная переменная...', '...', 9, Массив)
# 1... / index.php(12): test ()
#2 {main}
Следующая ошибка TypeError: возвращаемое значение test () должно быть строкой типа, null, возвращенным в.../index.php:9 Трассировка стека:
#0... / index.php(12): test ()
#1 {main} добавлен... / index.php в строке 9
Но на PHP-8 (php:8.0.0rc1-apache
docker image), он застревает в цикле и ничего не отображается.
Удаление
set_error_handler
хотя работает
Предупреждение: неопределенная переменная $test в... / index.php в строке 9
Неустранимая ошибка: Uncaught TypeError: test(): возвращаемое значение должно быть строкового типа, null возвращено в.../index.php:9
Трассировки стека:
#0... / index.php(12): test ()
#1 {main} добавлен... / index.php в строке 9
Это ошибка, или в новой версии что-то изменилось? Я пробовал это на PHP CLI, кстати.
1 ответ
Как указано в комментариях, это действительно была ошибка, которая была устранена во втором кандидате на выпуск (PHP-8.0.0 RC2).