src.where.comparacion_pura - gamboamartin/where GitHub Wiki

comparacion_pura

Esta función realiza una serie de validaciones y formateos en los datos proporcionados, devolviendo un objeto que contiene información sobre el campo y su valor. Verifica que la clave no esté vacía, que los datos no estén vacíos, y utiliza funciones auxiliares para obtener y formatear el campo y el valor. Además, permite la sustitución del campo a partir de un array de columnas extra.

Signatura

private function comparacion_pura(array $columnas_extra, array|string|null $data, string $key): array|stdClass

Parámetros

$columnas_extra (array): Un array asociativo que puede contener sustituciones para los nombres de los campos.

$data (array|string|null): Los datos de los cuales se obtendrán el campo y el valor. Puede ser un array, una cadena de texto o nulo.

$key (string): La clave que se utilizará para obtener el campo del array $data.

Retorna

  • array|stdClass: La función devuelve un objeto (stdClass) que contiene el campo y el valor procesados. Si hay algún problema con los datos de entrada, devuelve un array con detalles del error.

Explicación Detallada

  • Verificación de la clave:

    • Se verifica si la clave $key está vacía. Si está vacía, se devuelve un mensaje de error.
  • Verificación de los datos:

    • Si $data es un array y está vacío, se devuelve un mensaje de error indicando que los datos están vacíos.
  • Inicialización del objeto de datos:

    • Se crea un objeto stdClass llamado $datas.
  • Obtención del campo:

    • Se utiliza la función campo para obtener y formatear el campo a partir de $data y $key.
    • Si ocurre un error durante este proceso, se devuelve un mensaje de error.
  • Obtención del valor:

    • Se utiliza la función value para obtener y formatear el valor a partir de $data.
    • Si ocurre un error durante este proceso, se devuelve un mensaje de error.
  • Sustitución del campo:

    • Se verifica si $key existe en $columnas_extra. Si es así, se sustituye el valor de $datas->campo con el valor correspondiente en $columnas_extra.

Ejemplos

// Ejemplo 1: Uso básico con datos válidos y sin columnas extra
$columnas_extra = [];
$data = ['campo' => 'nombre', 'value' => 'Juan'];
$key = 'campo';
$resultado = $this->comparacion_pura($columnas_extra, $data, $key);
echo json_encode($resultado); // Imprime: {"campo":"nombre","value":"Juan"}

// Ejemplo 2: Uso con columnas extra
$columnas_extra = ['campo' => 'nombre_alternativo'];
$data = ['campo' => 'nombre', 'value' => 'Juan'];
$key = 'campo';
$resultado = $this->comparacion_pura($columnas_extra, $data, $key);
echo json_encode($resultado); // Imprime: {"campo":"nombre_alternativo","value":"Juan"}

// Ejemplo 3: Error por clave vacía
$columnas_extra = [];
$data = ['campo' => 'nombre', 'value' => 'Juan'];
$key = '';
$resultado = $this->comparacion_pura($columnas_extra, $data, $key);
if (is_array($resultado)) {
    echo "Error: " . $resultado['mensaje']; // Imprime: Error: Error key vacio
}

// Ejemplo 4: Error por datos vacíos
$columnas_extra = [];
$data = [];
$key = 'campo';
$resultado = $this->comparacion_pura($columnas_extra, $data, $key);
if (is_array($resultado)) {
    echo "Error: " . $resultado['mensaje']; // Imprime: Error: Error datos vacio
}

Código de la Función

private function comparacion_pura(array $columnas_extra, array|string|null $data, string $key):array|stdClass{

        if($key === ''){
            return $this->error->error(mensaje: "Error key vacio", data: $key, es_final: true);
        }
        if(is_array($data) && count($data) === 0){
            return $this->error->error(mensaje:"Error datos vacio",data: $data, es_final: true);
        }
        $datas = new stdClass();
        $datas->campo = $this->campo(data: $data,key:  $key);
        if(errores::$error){
            return $this->error->error(mensaje:"Error al maquetar campo",data: $datas->campo);
        }
        $datas->value = $this->value(data: $data);
        if(errores::$error){
            return $this->error->error(mensaje:"Error al validar maquetacion",data: $datas->value);
        }
        $es_sq = false;
        if(isset($columnas_extra[$key])){
            $es_sq = true;
        }
        if($es_sq){
            $datas->campo = $columnas_extra[$key];
        }

        return $datas;
    }