Traducciones: English
Biblioteca PHP para manejar errores.
Para manejar excepciones puedes utilizar la biblioteca exception-handler.
- Requisitos
- Instalación
- Clases disponibles
- Excepciones utilizadas
- Uso
- Tests
- Tareas pendientes
- Registro de Cambios
- Contribuir
- Patrocinar
- Licencia
-
Sistema operativo: Linux | Windows.
-
Versiones de PHP: 8.1.
La mejor forma de instalar esta extensión es a través de Composer.
Para instalar PHP ErrorHandler library, simplemente escribe:
composer require josantonius/error-handler
El comando anterior sólo instalará los archivos necesarios, si prefieres descargar todo el código fuente puedes utilizar:
composer require josantonius/error-handler --prefer-source
También puedes clonar el repositorio completo con Git:
git clone https://github.com/josantonius/php-error-handler.git
Josantonius\ErrorHandler\ErrorException
Extends
ErrorException
Obtener el archivo donde se produjo el error:
public function getFile(): string;
Obtener el nivel del error:
public function getLevel(): int;
Obtener el la línea donde se produjo el error:
public function getLine(): int;
Obtener el mensaje del error:
public function getMessage(): string;
Obtener el nombre del error:
public function getName(): string;
Josantonius\ErrorHandler\ErrorHandled
Obtener el archivo donde se produjo el error:
public function getFile(): string;
Obtener el nivel del error:
public function getLevel(): int;
Obtener el la línea donde se produjo el error:
public function getLine(): int;
Obtener el mensaje del error:
public function getMessage(): string;
Obtener el nombre del error:
public function getName(): string;
Convertir errores en excepciones:
/**
* La excepción será lanzada desde la instancia ErrorException.
*
* @param int[] $errorLevel Define qué niveles de error se convertirán en excepciones.
*
* @throws WrongErrorLevelException si el nivel de error no es válido.
*
* @see https://www.php.net/manual/en/errorfunc.constants.php para ver los niveles disponibles.
*/
public function convertToExceptions(int ...$errorLevel): ErrorHandler;
Convertir errores en excepciones excepto algunos:
/**
* La excepción será lanzada desde la instancia ErrorException.
*
* @param int[] $errorLevel Define qué niveles de error se convertirán en excepciones.
*
* @throws WrongErrorLevelException si el nivel de error no es válido.
*
* @see https://www.php.net/manual/en/errorfunc.constants.php para ver los niveles disponibles.
*/
public function convertToExceptionsExcept(int ...$errorLevel): ErrorHandler;
Registrar función para manejar errores:
/**
* El manejador de errores recibirá el objeto ErrorHandled.
*
* @see https://www.php.net/manual/en/functions.first_class_callable_syntax.php
*/
public function register(callable $callback): ErrorHandler;
Utilizar los informes de errores para determinar qué errores se gestionan:
/**
* Si se utiliza el valor de error_reporting() para determinar qué errores se manejan.
*
* Si no se utiliza este método, todos los errores se enviarán al manejador.
*
* @see https://www.php.net/manual/en/function.error-reporting.php
*/
public function useErrorReportingLevel(): ErrorHandler;
use Josantonius\ErrorHandler\Exceptions\WrongErrorLevelException;
Ejemplo de uso para esta biblioteca:
use Josantonius\ErrorHandler\ErrorHandler;
$errorHandler = new ErrorHandler();
$errorHandler->convertToExceptions();
// Todos los errores serán convertidos a excepciones.
use Josantonius\ErrorHandler\ErrorHandler;
$errorHandler = new ErrorHandler();
$errorHandler->convertToExceptions(E_USER_ERROR, E_USER_WARNING);
// Solo E_USER_ERROR and E_USER_WARNING serán convertidos a excepciones.
use Josantonius\ErrorHandler\ErrorHandler;
$errorHandler = new ErrorHandler();
$errorHandler->convertToExceptionsExcept(E_USER_DEPRECATED, E_USER_NOTICE);
// Todos los errores excepto E_USER_DEPRECATED y E_USER_NOTICE serán convertidos a excepciones.
use Josantonius\ErrorHandler\ErrorHandler;
error_reporting(E_USER_ERROR);
$errorHandler = new ErrorHandler();
$errorHandler->convertToExceptions()->useErrorReportingLevel();
// Solo E_USER_ERROR será convertido en excepción.
use ErrorException;
use Josantonius\ErrorHandler\ErrorHandler;
set_exception_handler(function (ErrorException $exception) {
var_dump([
'level' => $exception->getLevel(),
'message' => $exception->getMessage(),
'file' => $exception->getFile(),
'line' => $exception->getLine(),
'name' => $exception->getName(),
]);
});
$errorHandler = new ErrorHandler();
$errorHandler->convertToExceptions();
// Solo E_USER_ERROR será convertido en excepción.
use Josantonius\ErrorHandler\ErrorHandled;
use Josantonius\ErrorHandler\ErrorHandler;
function handler(Errorhandled $errorHandled): void {
var_dump([
'level' => $errorHandled->getLevel(),
'message' => $errorHandled->getMessage(),
'file' => $errorHandled->getFile(),
'line' => $errorHandled->getLine(),
'name' => $errorHandled->getName(),
]);
}
$errorHandler = new ErrorHandler();
$errorHandler->register(
callback: handler(...)
);
// Todos los errores se convertirán en excepciones.
use Josantonius\ErrorHandler\ErrorHandled;
use Josantonius\ErrorHandler\ErrorHandler;
class Handler {
public static function errors(Errorhandled $exception): void { /* hacer algo */ }
}
$errorHandler = new ErrorHandler();
$errorHandler->register(
callback: Handler::errors(...)
)->convertToExceptions();
// El error será enviado al manejador de errores y luego lanzará la excepción.
error_reporting(E_USER_ERROR);
class Handler {
public function errors(Errorhandled $exception): void { /* hacer algo */ }
}
$handler = new Handler();
$errorHandled->register(
callback: $handler->errors(...),
)->convertToExceptions()->useErrorReportingLevel();
// Solo E_USER_ERROR se pasará al manejador y se convertirá en excepción.
Para ejecutar las pruebas necesitarás Composer y seguir los siguientes pasos:
git clone https://github.com/josantonius/php-error-handler.git
cd php-error-handler
composer install
Ejecutar pruebas unitarias con PHPUnit:
composer phpunit
Ejecutar pruebas de estándares de código con PHPCS:
composer phpcs
Ejecutar pruebas con PHP Mess Detector para detectar inconsistencias en el estilo de codificación:
composer phpmd
Ejecutar todas las pruebas anteriores:
composer tests
- Añadir nueva funcionalidad
- Mejorar pruebas
- Mejorar documentación
- Mejorar la traducción al inglés en el archivo README
- Refactorizar código para las reglas de estilo de código deshabilitadas (ver phpmd.xml y phpcs.xml)
Los cambios detallados de cada versión se documentan en las notas de la misma.
Por favor, asegúrate de leer la Guía de contribución antes de hacer un pull request, comenzar una discusión o reportar un issue.
¡Gracias por colaborar! ❤️
Si este proyecto te ayuda a reducir el tiempo de desarrollo, puedes patrocinarme para apoyar mi trabajo 😊
Este repositorio tiene una licencia MIT License.
Copyright © 2016-actualidad, Josantonius