PDO::CASE_NATURAL, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_ORACLE_NULLS => PDO::NULL_NATURAL, PDO::ATTR_STRINGIFY_FETCHES => false, PDO::ATTR_EMULATE_PREPARES => false, ]; public static function init(...$args) { self::$instance = new Database(...$args); } public static function __callStatic(string $name, array $args) { return self::$instance->{$name}(...$args); } public static function getInstance(): Database { return self::$instance; } public static function buildDSN(array $vars): string { $dsn = ($vars['driver'] ?? 'mysql') . ':'; foreach($vars as $key => $value) { if($key === 'driver' || $key === 'username' || $key === 'password') continue; if($key === 'database') $key = 'dbname'; $dsn .= $key . '=' . $value . ';'; } return $dsn; } }