(PECL runkit >= 0.7.0)
runkit_sandbox_output_handler — Especificar una función para capturar y/o procesar la salida de un aislamiento de procesos de runkit
Normalmente, cuanquier cosa que realice una salida (como echo o print) será sacada como si fuera impresa desde el ámbito padre. Sin embargo, al usar runkit_sandbox_output_handler(), la salida generada por el aislamiento de procesos (inclueyndo errores) puede ser capturada por una función fuera del aislamiento de procesos.
Nota: Soporte para Entorno de Pruebas (requerido por runkit_lint(), runkit_lint_file(), y la clase Runkit_Sandbox) está disponible sólo a partir de PHP 5.1.0 o versiones especialmente parcheadas de PHP 5.0, y requiere que thread safety sea habilitada. Vea el archivo README incluido en el paquete runkit para más información.
Nota: Obsoleto
A partir de la versión 0.5 de runkit, esta función está obsoleta y está programada para ser eliminada del paquete antes de la distribución de la versión 1.0. Para una instancia de Runkit_Sandbox, el gestor de salida puede ser leído/establecido usando la sintaxis de índice de array mostrado en la página de definición de la clase Runkit_Sandbox.
sandbox
Instancia de objeto de la clase Runkit_Sandbox en la que establecer el gestor de salida.
callback
Nombre de una función que espera un parámetro.
La salida generada por sandbox
será pasada
a esta llamada de retorno (callback). Cualquier cosa devuelta por la llamda de retorno será mostrada
normalmente. Si este parámetro no se pasa, la gestión de salida no será cambiada.
Si se pasa un valor no verdadero, la gestión de salida será deshabilitada y será vuelta a la
muestra directa.
Devuelve el nombre de la llamada de retorno del gestor de salida definido previamente, o
FALSE
si no se definió previamente un gestor.
Ejemplo #1 Introducir la salida en una variable
<?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("Hola\n");
$php->eval('var_dump("Lo siento");');
$php->die("Me perdí.");
unset($php);
echo "Sandbox Completado\n\n";
echo $sandbox_output;
?>
El resultado del ejemplo sería:
Sandbox Completado Hola string(9) "Lo sientoe" Me perdí.