administrador.base.controller.controler.retorno_error - gamboamartin/administrador GitHub Wiki

retorno_error

La función retorno_error es una función pública que maneja y retorna errores de manera estructurada. La función permite la personalización del manejo de errores, incluyendo la posibilidad de enviar la salida a un servicio web (ws), redirigir a una página específica si se han configurado encabezados, o simplemente mostrar el error en la salida estándar.

Signatura


final public function retorno_error(string $mensaje, mixed $data, bool $header, bool $ws, string $class = '',
                                        bool$es_final = false, string $file  = '', string$function = '',
                                        string $line = '', array $params = array()): array

Parámetros

  • string $mensaje:
    Un mensaje descriptivo del error que ocurrió.

  • mixed $data:
    Los datos adicionales relacionados con el error, que pueden ser de cualquier tipo.

  • bool $header:
    Un valor booleano que indica si se debe redirigir a una página específica después de que ocurre el error, en función de las configuraciones de sesión.

  • bool $ws:
    Un valor booleano que indica si el error debe ser enviado como respuesta a un servicio web.

  • string $class (opcional):
    El nombre de la clase en la que ocurrió el error. El valor por defecto es una cadena vacía.

  • bool $es_final (opcional):
    Un valor booleano que indica si el error es final, lo que generalmente implica la terminación del script. El valor por defecto es false.

  • string $file (opcional):
    El nombre del archivo en el que ocurrió el error. El valor por defecto es una cadena vacía.

  • string $function (opcional):
    El nombre de la función en la que ocurrió el error. El valor por defecto es una cadena vacía.

  • string $line (opcional):
    El número de línea en la que ocurrió el error. El valor por defecto es una cadena vacía.

  • array $params (opcional):
    Un array de parámetros adicionales que podrían ser útiles para diagnosticar el error. El valor por defecto es un array vacío.

Retorno

  • array:
    Retorna un array que representa el error generado, incluyendo toda la información relevante como mensaje, datos, clase, archivo, función, línea y parámetros adicionales.

Explicación Detallada

  1. Generación del error:

    • La función llama a $this->errores->error() para generar un array que representa el error con todos los detalles proporcionados.
  2. Manejo de errores para servicios web:

    • Si $ws es true, la función envía el error a través de out_ws_error() y no continúa con la ejecución.
  3. Redirección basada en encabezados:

    • Si $header es true, la función verifica si las variables de sesión seccion_header y accion_header están configuradas.
    • Si ambas variables están configuradas y no están vacías, la función redirige a la página especificada por estas variables y termina la ejecución.
  4. Salida de errores al usuario:

    • Si no se aplica un encabezado de redirección, la función imprime todos los mensajes de error almacenados en errores::$out y termina la ejecución del script.
  5. Retorno del error:

    • Si no se realiza ninguna redirección o salida a un servicio web, la función simplemente retorna el array de error generado.

Ejemplos

$mensaje = "Error al conectar con la base de datos";
$data = ["host" => "localhost", "database" => "mi_base_de_datos"];
$header = false;
$ws = false;

$resultado = $this->retorno_error($mensaje, $data, $header, $ws);

// Resultado esperado:
// Un array que contiene el mensaje de error, datos, y otros detalles proporcionados.
// La ejecución del script se detendrá si se configura la redirección o si es un error fatal.

Código de la Función

final public function retorno_error(string $mensaje, mixed $data, bool $header, bool $ws, string $class = '',
                                        bool$es_final = false, string $file  = '', string$function = '',
                                        string $line = '', array $params = array()): array
    {
        $error = $this->errores->error(mensaje: $mensaje, data: $data, class: $class, es_final: $es_final,
            file: $file, funcion: $function, line: $line, params: $params);
        if($ws){
            $this->out_ws_error(error: $error);
        }
        if(!$header){
            return $error;
        }
        $aplica_header = false;
        $seccion_header = '';
        $accion_header = '';

        if(isset($_SESSION['seccion_header'], $_SESSION['accion_header'])) {
            if (trim($_SESSION['seccion_header']) !== '' && trim($_SESSION['accion_header']) !== '') {
                $seccion_header = trim($_SESSION['seccion_header']);
                $accion_header = trim($_SESSION['accion_header']);
                unset($_SESSION['seccion_header'],$_SESSION['accion_header']);
                $aplica_header = true;
            }
        }

        if($aplica_header){
            $liga = './index.php?seccion='.$seccion_header.'&accion='.$accion_header.'&registro_id='
                .$_GET['registro_id'].'&session_id='.$this->session_id;
            header("Location: $liga");
            exit;
        }
        $out = array_reverse(errores::$out);
        foreach ($out as $msj){
            echo $msj;
            echo "<br>";
            echo "<hr>";
        }
        die('Error');
    }