Handler de errores global
QuietGuard\Monitor\ErrorHandler conecta los handlers globales de PHP para que un host PHP simple, sin pipeline de excepciones de framework, reporte igualmente los errores no capturados. Los frameworks (Laravel, Symfony) tienen sus propios hooks y no deben llamarlo.
Registro
ErrorHandler::register() es una única llamada estática que recibe un Reporter configurado:
Llámelo una vez, lo antes posible en su bootstrap, después de construir el Reporter.
Qué registra
register() cablea tres hooks globales:
set_exception_handler: todoThrowableno capturado se envía mediante$reporter->reportException($e). El handler encadena: si otro handler de excepciones global estaba registrado antes deErrorHandler::register(), sigue ejecutándose después de que la excepción se haya reportado (el monitor reporta primero y luego delega). Cuando no existe ningún handler previo, la excepción (mensaje, fichero:línea y stack trace) se escribe enerror_log, igual que lo que el comportamiento por defecto de PHP habría registrado: instalar la monitorización nunca elimina, por tanto, el registro local del fallo en el host.set_error_handler: un error de PHP lanzado se encapsula en unaErrorExceptiony luego se reporta. Comprueba primeroerror_reporting() & $severity, de modo que los valores suprimidos con@o por debajo del nivelerror_reportingactual se ignoran. A continuación devuelvefalsepara que la gestión de errores normal de PHP se ejecute igualmente.register_shutdown_function: en el apagado, se inspeccionaerror_get_last()y, si se trata de un tipo fatal (E_ERROR,E_PARSE,E_CORE_ERROR,E_COMPILE_ERROR), se reporta unaErrorException. Esto captura las fatales que el handler de errores no puede interceptar.
Todos los caminos pasan por el Reporter, que nunca lanza excepciones: registrar estos handlers no puede, por tanto, romper el host.
Un bootstrap PHP mínimo
El SDK de Laravel, el bundle de Symfony y el plugin de WordPress no utilizanErrorHandler: Laravel y Symfony conectan sus propios pipelines de excepciones, y el plugin de WordPress se integra con WordPress. UtiliceErrorHandlerúnicamente en un host que carezca de su propio pipeline de excepciones.
Está leyendo la documentación PHP Core v1.0.