(PECL runkit >= 0.7.0)
runkit_sandbox_output_handler — Задает функцию для захвата и/или обработки данных из "песочницы".
Обычно все результаты работы в песочнице (использование функций echo или print) будут выведены в родительском окружении. Использование runkit_sandbox_output_handler() позволяет перехватить эти данные функцией вне песочницы.
Замечание: Поддержка песочницы (необходима для runkit_lint(), runkit_lint_file(), и класса Runkit_Sandbox) доступна только начиная с версии PHP 5.1.0 или в специально пропатченных версиях PHP 5.0, а также требует потокобезопасной (thread safe) версии PHP. Для более подробной информации смотрите файл README, поставляемый с пакетом runkit.
Замечание: Функция устарела
Начиная с версии runkit 0.5 данная функция является устаревшей и помечена для удаления в версии 1.0. Обработка вывода песочницы может быть задана с помощью опции output_handler, доступной в виде Array Access для экземпляра Runkit_Sandbox. Подробную информацию можно получить на странице описания Runkit_Sandbox
sandbox
Экземпляр Runkit_Sandbox, вывод которого необходимо обрабатывать.
callback
Имя функции для перехвата данных. Функция должна принимать один аргумент.
Вывод sandbox
будет передан этой функции.
Все данные, возвращаемые функцией будут отображены в стандартном порядке.
Если этот параметр отсутствует, управление выводом песочницы не будет изменено.
Если указанной функции не существует, обработка вывода будет отключена и данные
будут выводиться в стандартном режиме.
Возвращает предыдущее имя функции или FALSE
, если она не была задана.
Пример #1 Перевод вывода в переменную
<?php
function capture_output($str) {
$GLOBALS['sandbox_output'] .= $str;
return '';
}
$sandbox_output = '';
$php = new Runkit_Sandbox();
runkit_sandbox_output_handler($php, 'capture_output');
$php->echo("Привет\n");
$php->eval('var_dump("Прощу прощения");');
$php->die("Я потерял себя.");
unset($php);
echo "Песочница завершена\n\n";
echo $sandbox_output;
?>
Результат выполнения данного примера:
Песочница завершена Привет string(9) "Прощу прощения" Я потерял себя.