administrador.base.conexion.conecta - gamboamartin/administrador GitHub Wiki

conecta

La función conecta se utiliza para establecer una conexión a una base de datos utilizando los parámetros de configuración proporcionados.

Signatura

private function conecta(database|stdClass $conf_database, string $motor): PDO|array|false

Parámetros

$conf_database (database|stdClass): Un objeto database o stdClass que contiene los detalles de configuración de la base de datos, como el host, el nombre de la base de datos, el usuario y la contraseña.

$motor (string): Una cadena de texto que especifica el motor de base de datos que se utilizará para la conexión.

Retorna

  • PDO: La función devuelve un objeto PDO si la conexión se establece con éxito.

  • array: Devuelve un array con un mensaje de error si se produce algún problema durante la conexión.

Explicación Detallada

Verifica la existencia de las claves necesarias en el objeto de configuración de la base de datos.

Verifica si el motor de base de datos especificado es válido.

Para motores MySQL o MariaDB, intenta establecer una conexión utilizando PDO con los detalles de conexión proporcionados.

Para el motor MSSQL, intenta establecer una conexión utilizando PDO con los detalles de conexión proporcionados, incluido el puerto si está disponible en la configuración.

Si se produce un error durante la conexión, devuelve un array con un mensaje de error.

Ejemplos

$conf_database = ...; // objeto database o stdClass con los detalles de configuración de la base de datos
$motor = 'MYSQL'; // o 'MARIADB' o 'MSSQL'
$link = $this->conecta($conf_database, $motor);
if ($link instanceof PDO) {
    // La conexión se ha establecido correctamente
} else {
    // Se produjo un error durante la conexión
}

Código de la Función

private function conecta(database|stdClass $conf_database, string $motor): PDO|array|false
    {
        $link = false;
        $keys = array('db_host','db_name','db_user','db_password');
        $valida = (new validacion())->valida_existencia_keys(keys: $keys,registro:  $conf_database);
        if(errores::$error){
            return $this->error->error(mensaje:  'Error al validar conf_database',data: $valida);
        }

        if(!in_array($motor, $this->motores_validos)){
            return $this->error->error(mensaje:  'Error ingrese un motor valido',data: $motor, es_final: true);
        }

        if($motor === 'MYSQL' || $motor === 'MARIADB') {
            try {
                $link = new PDO("mysql:host=$conf_database->db_host;dbname=$conf_database->db_name",
                    $conf_database->db_user, $conf_database->db_password);
            } catch (Throwable $e) {
                return $this->error->error(mensaje: 'Error al conectar', data: $e, es_final: true);
            }
        }
        if($motor === 'MSSQL') {
            try {
                if(!isset($conf_database->db_port) || $conf_database->db_port === '' ){
                    $conf_database->db_port = '1443';
                }
                $dns = "sqlsrv:server=$conf_database->db_host,1443;database=$conf_database->db_name";
                $link = new PDO($dns, $conf_database->db_user, $conf_database->db_password);
            } catch (Throwable $e) {
                return $this->error->error(mensaje: 'Error al conectar', data: $e, es_final: true);
            }
        }
        return $link;
    }