administrador.base.orm._result.genera_modelos_hijos.21.6.0 - gamboamartin/administrador GitHub Wiki

genera_modelos_hijos

Esta función privada se encarga de generar modelos hijos a partir de un modelo base, utilizando información proporcionada en forma de arreglo asociativo.

Signatura

private function genera_modelos_hijos(modelo_base $modelo): array

Parámetros

$modelo (modelo_base): El modelo base del cual se generarán los modelos hijos.

Retorna

  • array: Un arreglo que contiene información sobre los modelos hijos generados. Cada elemento del arreglo representa un modelo hijo y contiene los siguientes campos:
  • filtros: Arreglo de filtros asociados al modelo hijo.
  • filtros_con_valor: Arreglo de filtros con valores asociados al modelo hijo.
  • nombre_estructura: Nombre de la estructura asociada al modelo hijo.
  • namespace_model: Namespace del modelo hijo.

Explicación Detallada

  • Esta función recibe un modelo base y genera modelos hijos a partir de él.
  • Itera sobre los modelos hijos del modelo base y verifica que cada modelo hijo tenga definidos los campos necesarios: filtros, filtros con valor, nombre de la estructura y namespace del modelo.
  • Si alguno de los campos requeridos no está definido correctamente en algún modelo hijo, se devuelve un error.
  • Para cada modelo hijo válido, se crea un elemento en el arreglo de modelos hijos, donde se almacenan los filtros, filtros con valor, nombre de la estructura y namespace del modelo.

Ejemplos

// Creación de objeto
$objeto = new _result();

// Creación de un modelo base
$modelo_base = new modelo_base();

// Definición de modelos hijos
$modelo_hijo1 = [
    'filtros' => ['filtro1', 'filtro2'],
    'filtros_con_valor' => ['filtro3' => 'valor3', 'filtro4' => 'valor4'],
    'nombre_estructura' => 'Estructura1',
    'namespace_model' => 'Namespace\Model1'
];
$modelo_hijo2 = [
    'filtros' => ['filtro5', 'filtro6'],
    'filtros_con_valor' => ['filtro7' => 'valor7', 'filtro8' => 'valor8'],
    'nombre_estructura' => 'Estructura2',
    'namespace_model' => 'Namespace\Model2'
];

// Agregar modelos hijos al modelo base
$modelo_base->hijo = [$modelo_hijo1, $modelo_hijo2];

// Generar modelos hijos
$resultado = $objeto->genera_modelos_hijos($modelo_base);
// $resultado contendrá un arreglo con la información de los modelos hijos generados correctamente

Código de la Función

private function genera_modelos_hijos(modelo_base $modelo): array{
        $modelos_hijos = array() ;
        foreach($modelo->hijo as $key=>$modelo){
            if(is_numeric($key)){
                return $this->error->error(mensaje: "Error en key",data: $modelo->hijo, es_final: true);
            }
            if(!isset($modelo['filtros'])){
                return $this->error->error(mensaje: "Error filtro",data: $modelo->hijo, es_final: true);
            }
            if(!isset($modelo['filtros_con_valor'])){
                return $this->error->error(mensaje:"Error filtro",data:$modelo->hijo, es_final: true);
            }
            if(!is_array($modelo['filtros'])){
                return $this->error->error(mensaje:"Error filtro",data:$modelo->hijo, es_final: true);
            }
            if(!is_array($modelo['filtros_con_valor'])){
                return $this->error->error(mensaje:"Error filtro",data:$modelo->hijo, es_final: true);
            }
            if(!isset($modelo['nombre_estructura'])){
                return $this->error->error(mensaje:"Error en estructura",data:$modelo->hijo, es_final: true);
            }

            $modelos_hijos[$key]['filtros']= $modelo['filtros'];
            $modelos_hijos[$key]['filtros_con_valor']= $modelo['filtros_con_valor'];
            $modelos_hijos[$key]['nombre_estructura']= $modelo['nombre_estructura'];
            $modelos_hijos[$key]['namespace_model']= $modelo['namespace_model'];
        }
        return $modelos_hijos;
    }