void PEAR::setErrorHandling (
integer $mode
= = null
,
mixed $options
= = null
)
setErrorHandling() puede ser invocado tanto como método estándar de un objeto ($obj->setErrorHandling) como un método estático (PEAR::setErrorHandling). Si es llamado estáticamente, PEAR::setErrorHandling() fija el modo de error por defecto para todos los objetos derivados de PEAR (comportamiento de gestión de errores global). Si es llamado como método de un objeto $obj->setErrorHandling() fija el modo de error por defecto sólo para ese objeto (comportamiento de gestión de errores local).
integer $mode - una de las siguientes constantes
PEAR_ERROR_RETURN Si ocurre un error, un PEAR_Error error es devuelto por el método de generación de errores (normalmente raiseError().)
PEAR_ERROR_PRINT Como PEAR_ERROR_RETURN, pero se imprimirá un mensaje de error adicionalmente.
PEAR_ERROR_TRIGGER Como PEAR_ERROR_RETURN, pero la función interna de PHP trigger_error() será llamada en el constructor de PEAR_Error con el mensaje de error.
PEAR_ERROR_DIE El script terminará y un mensaje de error se imprimirá en la instanciación de PEAR_Error.
PEAR_ERROR_CALLBACK Si ocurre un error, el
callback pasado a $options es llamado.
PEAR_ERROR_EXCEPTION Si está presente Zend Engine 2, se generará una excepción usando el objeto PEAR_Error.
mixed $options - el valor para $options
depende de $mode
PEAR_ERROR_PRINT y PEAR_ERROR_DIE soportan una cadena de formato opcional printf() empleada para imprimir el mensaje de error. Esta cadena debería contener un sólo %s, que se empleará para insertar elmensaje de error en la cadena. Usa la cadena para agrupar el mensaje de error con otra información de utilidad no incluida en el prefijo del mensaje de error o en el propio mensaje.
PEAR_ERROR_TRIGGER requiere una constante de error de nivel deusuario empleada por trigger_error() (posible constantes: E_USER_NOTICE, E_USER_WARNING o E_USER_ERROR). Notar que si la constante de error no está entre una de las válidas, una alerta de PHP será lanzada.
PEAR_ERROR_CALLBACK El callback debe ser el nombre de una fución con el formato descrito en la sección Pseudo-Type del manual de PHP (bien una cadena, bien un array). El callback debe aceptar un único parámetro, el objeto PEAR_Error generado por una condición de error. Notar que si el callback no es válido, se lanzará una alerta de PHP.
Aquí hay un ejemplo de varios modos de empleo de setErrorHandling:
<?php
require_once 'PEAR.php';
// teórica constante de error para este ejemplo
define('MYCLASS_ERROR_CODE', 1);
// demostración de gestión de errores global
// en este caso, todos los Errores PEAR lanzarán una alerta de PHP
PEAR::setErrorHandling(PEAR_ERROR_TRIGGER, E_USER_WARNING);
// Notar que el archivo y el número de línea van a esta ren el constructor de PEAR_Error
// en PEAR.php
PEAR::raiseError('test warning', MYCLASS_ERROR_CODE);
// este error especifica un modo, y sobreescribe el manejo de errores global por defecto
$e = PEAR::raiseError('return only', MYCLASS_ERROR_CODE, PEAR_ERROR_RETURN);
PEAR::setErrorHandling(PEAR_ERROR_PRINT, "Gronk error: %s<br />\n");
// imprimirá "Gronk error: test warning<br />\n"
PEAR::raiseError('test warning', MYCLASS_ERROR_CODE);
/**
* Falsa clase para demostrar el manejo de errores
* @package myClass
*/
class myClass extends PEAR {
/**
* Demonstración de gestión de errores local por defecto
*/
function myClass()
{
// método callback del objeto
$this->setErrorHandling(PEAR_ERROR_CALLBACK, array(&$this, 'handleErr'));
// imprimirá "custom handler...is working"
PEAR::raiseError('custom handler', MYCLASS_ERROR_CODE);
// método callback de clase estática
$this->setErrorHandling(PEAR_ERROR_CALLBACK,
array('myClass', 'handleErrStatic'));
PEAR::raiseError('custom handler', MYCLASS_ERROR_CODE);
// función callback
$this->setErrorHandling(PEAR_ERROR_CALLBACK, 'standardCallback');
PEAR::raiseError('custom handler', MYCLASS_ERROR_CODE);
}
/**
* Callback fijado por el constructor
* @param PEAR_Error El objeto de error
*/
function handleErr($error)
{
$this->lastError = $error->getMessage();
print $error->getMessage() . "...is working\n";
}
/**
* Callback estático fijado por el constructor
*
* Notar que en PHP 5, $this no se fija si el método es declarado con
* el modificador de acceso "static". En PHP 4, $this es fijado, pero no
* al objeto myClass, por tanto ¡no lo uses!
* @param PEAR_Error El objeto de error
* @static
*/
function handleErrStatic($error)
{
print 'static ' . $error->getMessage() . "...is working\n";
}
}
/**
* @param PEAR_Error El objeto de error
*/
function standardCallback($error)
{
print 'normal function callback: ' . $error->getMessage();
}
// Esto causa la impresión de tres mensajes por parte de los callbacks de error:
// "custom handler...is working"
// "static custom handler... is working"
// "normal function callback: custom handler"
$mine = new myClass;
PEAR::setErrorHandling(PEAR_ERROR_DIE);
// termina el script con el mensaje de error "oops"
PEAR::raiseError('oops', MYCLASS_ERROR_CODE);
?>