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