administrador.base.controller.controler.out_ws_error - gamboamartin/administrador GitHub Wiki
out_ws_error
Esta función limpia el búfer de salida, establece el encabezado de tipo de contenido a JSON y luego intenta codificar el error proporcionado como JSON y lo muestra. Si ocurre un error durante la codificación, captura la excepción y maneja el error.
Signatura
private function out_ws_error(stdClass|array $error): void
Parámetros
$error
(stdClass|array): $error El error que se va a mostrar en formato JSON.
Retorna
- Tipo:
void
- Descripción: Un array actualizado que representa los campos de la vista de entrada, con el tipo asignado al campo especificado por
$key
.
Explicación Detallada
Validación de clave y tipo: Se verifican si las variables $key y $type están vacías. Si alguna de ellas está vacía, se devuelve un mensaje de error indicando que la clave o el tipo está vacío.
Encabezado de tipo de contenido: header('Content-Type: application/json') establece el encabezado HTTP de la respuesta para indicar que el contenido es JSON.
Codificación JSON: json_encode($error, JSON_THROW_ON_ERROR) intenta codificar el error como una cadena JSON. Si hay un problema durante la codificación, se lanza una excepción.
Manejo de excepciones: Si se lanza una excepción durante la codificación JSON, se captura en el bloque catch. Luego, se maneja el error llamando a un método (presumiblemente de una clase de manejo de errores) $this->errores->error y se imprime el error usando print_r($error) si $header es verdadero.
Terminación del script: exit; asegura que el script se detenga después de enviar la respuesta JSON.
Ejemplos
// Ejemplo: Error como un objeto stdClass
$error = new stdClass();
$error->code = 404;
$error->message = 'Recurso no encontrado';
$this->out_ws_error($error);
Código de la Función
private function out_ws_error(stdClass|array $error): void
{
ob_clean();
header('Content-Type: application/json');
try {
echo json_encode($error, JSON_THROW_ON_ERROR);
}
catch (Throwable $e){
$error = $this->errores->error('Error al maquetar json', $e);
if($header){
print_r($error);
exit;
}
return;
}
exit;
}