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;
    }