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