administrador.base.orm.modelo_base.es_namespace_especial.21.8.0 - gamboamartin/administrador GitHub Wiki

es_namespace_especial

Esta función verifica si un modelo dado pertenece a un namespace especial basado en una lista de namespaces proporcionada.

Signatura

private function es_namespace_especial(string $modelo, array $namespaces): bool|array

Parámetros

$modelo (string): El nombre del modelo que se va a verificar. $namespaces (array): Un array que contiene los namespaces a comparar.

Retorna

  • bool|array: La función devuelve un valor booleano true si el modelo pertenece a algún namespace especial, y false si no pertenece. Si se detecta un error, devuelve un array con detalles del error.

Explicación Detallada

  1. Verificación del modelo vacío: La función verifica si el modelo proporcionado está vacío. Si es así, devuelve un mensaje de error indicando que el modelo está vacío.

  2. Inicialización de la variable de verificación: Se inicializa una variable $es_namespace_especial_como_mis_inges como false que se utilizará para indicar si el modelo pertenece a algún namespace especial.

  3. Bucle a través de los namespaces: La función recorre cada namespace proporcionado en el array $namespaces.

  4. Verificación del namespace vacío: Se verifica si el namespace actual está vacío. Si es así, devuelve un mensaje de error indicando que el namespace está vacío.

  5. Verificación de pertenencia al namespace: Se divide el modelo utilizando el namespace actual como delimitador. Si el modelo se divide en más de una parte, significa que pertenece al namespace actual y, por lo tanto, se marca como un namespace especial.

  6. Devolución del resultado: Se devuelve el valor de la variable $es_namespace_especial_como_mis_inges, que indica si el modelo pertenece a algún namespace especial.

Ejemplos

// Llamada a la función es_namespace_especial
$modelo = 'gamboamartin\administrador\models\ModeloEspecial';
$namespaces = ['gamboamartin\administrador\models', 'gamboamartin\empleado\models'];

$resultado = es_namespace_especial($modelo, $namespaces);

if (is_bool($resultado)) {
    if ($resultado) {
        echo "El modelo pertenece a un namespace especial.";
    } else {
        echo "El modelo no pertenece a ningún namespace especial.";
    }
} else {
    echo "Error: " . $resultado['mensaje'];
}

Código de la Función

private function es_namespace_especial(string $modelo, array $namespaces): bool|array
    {
        if($modelo === ''){
            return $this->error->error(mensaje: "Error modelo vacio", data: $modelo, es_final: true);
        }

        $es_namespace_especial_como_mis_inges = false;
        foreach ($namespaces as $namespace) {
            $namespace = trim($namespace);
            if($namespace === ''){
                return $this->error->error(mensaje: "Error namespace vacio", data: $namespaces, es_final: true);
            }

            $namespaces_explode = explode($namespace, $modelo);

            if (is_array($namespaces_explode) && count($namespaces_explode)>1) {
                $es_namespace_especial_como_mis_inges = true;
                break;
            }

        }
        return $es_namespace_especial_como_mis_inges;
    }