. */ namespace OrangeHRM\Installer\Util; use Doctrine\DBAL\Connection as DBALConnection; use Doctrine\DBAL\DriverManager; use Doctrine\DBAL\Types\Types; class DatabaseServerConnection { /** * @var DBALConnection|null */ private static ?DBALConnection $connection = null; private function __construct() { $dbInfo = StateContainer::getInstance()->getDbInfo(); $connectionParams = [ 'user' => $dbInfo[StateContainer::DB_USER], 'password' => $dbInfo[StateContainer::DB_PASSWORD], 'host' => $dbInfo[StateContainer::DB_HOST], 'port' => $dbInfo[StateContainer::DB_PORT], 'driver' => 'pdo_mysql', 'charset' => 'utf8mb4' ]; self::$connection = DriverManager::getConnection($connectionParams); self::$connection->getDatabasePlatform()->registerDoctrineTypeMapping('enum', Types::STRING); } /** * @return DBALConnection */ public static function getConnection(): DBALConnection { if (is_null(self::$connection)) { new self(); } return self::$connection; } public static function reset(): void { self::$connection = null; } }