/
vshmidt
/
php
Обзор
Документация
Войти
/
vshmidt
/
php
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
tests/output/ob_start_callback_output/exception_handler_nested.phpt
82 строки
2 KB
DanielEScherzer
Deprecate producing output in a user output handler (#19067)
10 июл 2025, 07:20
Не верифицирован
10 июл 2025, 07:20
07f1cfd
Код
Авторство
О чём код?
--TEST-- ob_start(): Check behaviour with nested deprecation converted to exception [produce output] --FILE-- <?php $log = []; set_error_handler(function (int $errno, string $errstr, string $errfile, int $errline) { throw new \ErrorException($errstr, 0, $errno, $errfile, $errline); }); function first_handler($string) { global $log; $log[] = __FUNCTION__ . ": <<<" . $string . ">>>"; echo __FUNCTION__; return "FIRST\n"; } function second_handler($string) { global $log; $log[] = __FUNCTION__ . ": <<<" . $string . ">>>"; echo __FUNCTION__; return "SECOND\n"; } function third_handler($string) { global $log; $log[] = __FUNCTION__ . ": <<<" . $string . ">>>"; echo __FUNCTION__; return "THIRD\n"; } ob_start('first_handler'); ob_start('second_handler'); ob_start('third_handler'); echo "In all of them\n\n"; try { ob_end_flush(); } catch (\ErrorException $e) { echo $e->getMessage() . "\n"; } echo "Ended third_handler\n\n"; try { ob_end_flush(); } catch (\ErrorException $e) { echo $e->getMessage() . "\n"; } echo "Ended second_handler\n\n"; try { ob_end_flush(); } catch (\ErrorException $e) { echo $e->getMessage() . "\n"; } echo "Ended first_handler handler\n\n"; echo "All handlers are over\n\n"; echo implode("\n", $log); ?> --EXPECT-- FIRST ob_end_flush(): Producing output from user output handler first_handler is deprecated Ended first_handler handler All handlers are over third_handler: <<<In all of them >>> second_handler: <<<THIRD ob_end_flush(): Producing output from user output handler third_handler is deprecated Ended third_handler >>> first_handler: <<<SECOND ob_end_flush(): Producing output from user output handler second_handler is deprecated Ended second_handler >>>