50 lines
1.5 KiB
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;
|
|
}
|
|
}
|
|
}
|