Files
2026-08-04 19:20:44 -03:00

59 lines
1.8 KiB
PHP

<?php
// Establece coneccion a base de datos (Singleton) usando el motor pgsql (postgreSQL) mediante la interfaz PDO
class Database {
// Conección única reutilizable
private static $connection = null;
public static function getConnection() {
// Si ya existe una conexión activa, se reutiliza
if (self::$connection !== null) {
return self::$connection;
}
// Obtiene credenciales desde variables de entorno, se definen valores por defecto en caso de que no existan
$host = $_ENV['DB_HOST'] ?? 'db';
$port = $_ENV['DB_PORT'] ?? '5432';
$db = $_ENV['DB_NAME'] ?? 'bytecenter';
$user = $_ENV['DB_USER'] ?? 'admin';
$pass = $_ENV['DB_PASSWORD'] ?? 'admin_bytepassword';
// DSN (Data Source Name):
// Define el tipo de base de datos (pgsql) y los parámetros de conexión
// Es la "cadena de conexión" que PDO necesita para saber a dónde conectarse
$dsn = "pgsql:host=$host;port=$port;dbname=$db";
try {
// Se crea la instancia de PDO (conección a la BD)
self::$connection = new PDO($dsn, $user, $pass, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
]);
return self::$connection; // Retorna la conección lista para usar
} catch (PDOException $e) {
// Log interno
error_log($e->getMessage());
// Muestra mensaje amigable
die("Ocurrió un error inesperado. Por favor, comuníquese con un administrador o intente denuevo mas tarde.");
// Mensaje para desarrollo -->
// die("Error de conexión a la base de datos: " . $e->getMessage());
}
}
}