public static function connect($type = null, $host = null, $name = null, $user = null, $pass = null) { if (!self::$dbh) { if ($type === null && defined('DB_TYPE')) { $type = DB_TYPE; } if ($host === null && defined('DB_HOST')) { $host = DB_HOST; } if ($name === null && defined('DB_NAME')) { $name = DB_NAME; } if ($user === null && defined('DB_USER')) { $user = DB_USER; } if ($pass === null && defined('DB_PASS')) { $pass = DB_PASS; } try { self::$dbh = new PDO($type . ':host=' . $host . ';dbname=' . $name, $user, $pass); self::$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); return self::$dbh; } catch (Exception $e) { throw new EpiDatabaseConnectionException('Could not connect to database', EpiException::EPI_EXCEPTION_DB_CONNECTION); } } else { return self::$dbh; } }