public function testUsernameAndPasswordWithCustomDsn() { $environmentConfig = new EnvironmentConfig(['adapter' => 'test_adapter', 'dsn' => 'custom_dsn', 'username' => 'test_username', 'password' => 'test_password']); $this->assertEquals('test_adapter', $environmentConfig->getAdapter()); $this->assertEquals('custom_dsn', $environmentConfig->getDsn()); $this->assertEquals('test_username', $environmentConfig->getUsername()); $this->assertEquals('test_password', $environmentConfig->getPassword()); }
public static function instance(EnvironmentConfig $config) { $configHash = md5(json_encode($config->getConfiguration())); if (isset(self::$instances[$configHash])) { return self::$instances[$configHash]; } $pdo = new PDO($config->getDsn(), $config->getUsername(), $config->getPassword()); if ($config->getAdapter() == 'mysql') { $adapter = new MysqlAdapter($pdo); } elseif ($config->getAdapter() == 'pgsql') { $adapter = new PgsqlAdapter($pdo); } elseif ($config->getAdapter() == 'sqlite') { $adapter = new SqliteAdapter($pdo); } else { throw new InvalidArgumentValueException('Unknown adapter "' . $config->getAdapter() . '". Use one of value: "mysql", "pgsql", "sqlite".'); } $adapter->setCharset($config->getCharset()); self::$instances[$configHash] = $adapter; return $adapter; }