Skip to content

Latest commit

 

History

History
412 lines (286 loc) · 10.2 KB

README.md

File metadata and controls

412 lines (286 loc) · 10.2 KB

PHP ErrorHandler library

Latest Stable Version License Total Downloads CI CodeCov PSR1 PSR4 PSR12

Traducciones: English

Biblioteca PHP para manejar errores.

Para manejar excepciones puedes utilizar la biblioteca exception-handler.



Requisitos

  • Sistema operativo: Linux | Windows.

  • Versiones de PHP: 8.1.

Instalación

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

Clases disponibles

Clase ErrorException

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;

Clase ErrorHandled

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;

Clase ErrorHandler

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;

Excepciones utilizadas

use Josantonius\ErrorHandler\Exceptions\WrongErrorLevelException;

Uso

Ejemplo de uso para esta biblioteca:

Convertir todos los errores en excepciones

use Josantonius\ErrorHandler\ErrorHandler;

$errorHandler = new ErrorHandler();

$errorHandler->convertToExceptions();

// Todos los errores serán convertidos a excepciones.

Convertir ciertos errores en 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.

Convertir todos los errores en excepciones excepto algunos

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.

Convertir en excepciones utilizando el nivel de notificación de errores

use Josantonius\ErrorHandler\ErrorHandler;

error_reporting(E_USER_ERROR);

$errorHandler = new ErrorHandler();

$errorHandler->convertToExceptions()->useErrorReportingLevel();

// Solo E_USER_ERROR será convertido en excepción.

Convertir en excepciones y utilizar un manejador de excepciones

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.

Registrar una función para manejar errores

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.

Registrar una función para manejar errores y convertirlos 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.

Registrar manejador, convertir en excepciones y usar el nivel de reporte de errores

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.

Tests

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

Tareas pendientes

  • 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)

Registro de Cambios

Los cambios detallados de cada versión se documentan en las notas de la misma.

Contribuir

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! ❤️

Patrocinar

Si este proyecto te ayuda a reducir el tiempo de desarrollo, puedes patrocinarme para apoyar mi trabajo 😊

Licencia

Este repositorio tiene una licencia MIT License.

Copyright © 2016-actualidad, Josantonius