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