Невозможно настроить обработчик ошибок для выдачи исключения 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).

Другие вопросы по тегам