Carpeta database
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
<?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());
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user