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 esfalse
. -
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
-
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.
- La función llama a
-
Manejo de errores para servicios web:
- Si
$ws
estrue
, la función envía el error a través deout_ws_error()
y no continúa con la ejecución.
- Si
-
Redirección basada en encabezados:
- Si
$header
estrue
, la función verifica si las variables de sesiónseccion_header
yaccion_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.
- Si
-
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.
- Si no se aplica un encabezado de redirección, la función imprime todos los mensajes de error almacenados en
-
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.'®istro_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');
}