private function initConnection($dbname) { $cfg = Config::getSingleton()->get($this->configKey); if (!$cfg) { throw new \Exception("No configuration found for '{$this->configKey}'"); } $cfg = $cfg[$dbname]; if (!$cfg) { throw new \Exception("No configuration found for connection '{$dbname}'"); } switch ($cfg['driver']) { case 'pgsql': case 'mysql': if (!isset($cfg['additional_dsn'])) { $cfg['additional_dsn'] = ''; } $connstr = "{$cfg['driver']}:host={$cfg['host']} dbname={$cfg['database']} {$cfg['additional_dsn']}"; if (isset($cfg['port'])) { $connstr .= ' port=' . $cfg['port']; } break; case 'sqlite': $connstr = "sqlite:{$cfg['filename']}"; break; default: throw new \Exception("Unsupported driver '{$cfg['driver']} given for connection '{$dbname}'."); } if (!isset($cfg['user'])) { $cfg['user'] = ''; } if (!isset($cfg['password'])) { $cfg['password'] = ''; } if (class_exists("Aura\\Sql\\ExtendedPdo")) { $conn = new ExtendedPdo($connstr, $cfg['user'], $cfg['password']); if (isset($cfg['profiling']) && $cfg['profiling'] == true) { $conn->setProfiler(new Profiler()); $conn->getProfiler()->setActive(true); } } else { $conn = new PDO($connstr, $cfg['user'], $cfg['password']); } if ($conn) { $conn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } $this->connections[$dbname] = $conn; }