Entonces, para aferrarnos a lo que dice Westie, la parte importante es que solo puede tener un controlador de errores, y la función set_error_handler() devuelve el controlador de error definido previamente, o nulo si no se definió ninguno. Por lo tanto, en los manejadores de errores, posiblemente use una clase que almacene el controlador de errores anterior al registrarlo, de modo que cuando maneje los errores con su método de clase, llame también al controlador de errores anterior. Un extracto del cliente Raven-php Sentry:
public function registerErrorHandler($call_existing_error_handler = true, $error_types = -1)
{
$this->error_types = $error_types;
$this->old_error_handler = set_error_handler(array($this, 'handleError'), error_reporting());
$this->call_existing_error_handler = $call_existing_error_handler;
}
y luego el método de error de identificador:
public function handleError($code, $message, $file = '', $line = 0, $context=array())
{
if ($this->error_types & $code & error_reporting()) {
$e = new ErrorException($message, 0, $code, $file, $line);
$this->handleException($e, true, $context);
}
if ($this->call_existing_error_handler && $this->old_error_handler) {
call_user_func($this->old_error_handler, $code, $message, $file, $line, $context);
}
}
Tenga en cuenta que esto supone> = 5.4 PHP – thorne51