WizdomWeb/app/Utilities/Database.php

50 lines
1.5 KiB
PHP

<?php
/**
* File: Database.php
* Version: 1.1
* Path: /app/Utilities/Database.php
* Purpose: Provides static method to retrieve PDO database connection using environment variables.
* Project: Wizdom Networks Website & HelpDesk+
*/
namespace WizdomNetworks\WizeWeb\Utilities;
use PDO;
use PDOException;
use WizdomNetworks\WizeWeb\Utilities\Logger;
use WizdomNetworks\WizeWeb\Utilities\ErrorHandler;
class Database
{
/**
* Returns a PDO connection using environment variables.
*
* @return PDO
* @throws \Exception
*/
public static function getConnection(): PDO
{
try {
$host = $_ENV['DB_HOST'];
$port = $_ENV['DB_PORT'];
$dbname = $_ENV['DB_NAME'];
$username = $_ENV['DB_USER'];
$password = $_ENV['DB_PASS'];
$dsn = "mysql:host={$host};port={$port};dbname={$dbname};charset=utf8mb4";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
Logger::info("Database connection established successfully.");
return new PDO($dsn, $username, $password, $options);
} catch (\Throwable $e) {
Logger::error("Database connection failed: " . $e->getMessage());
ErrorHandler::exception($e);
throw $e;
}
}
}