public function testAdapterAndConfiguredDsnWithPortAndCharset()
 {
     $config = ['adapter' => 'test_adapter', 'db_name' => 'test_db_name', 'host' => 'test_host', 'port' => 'port', 'charset' => 'utf8'];
     $environmentConfig = new EnvironmentConfig($config);
     $this->assertEquals($config, $environmentConfig->getConfiguration());
     $this->assertEquals('test_adapter', $environmentConfig->getAdapter());
     $this->assertEquals('test_adapter:dbname=test_db_name;host=test_host;port=port;charset=utf8', $environmentConfig->getDsn());
     $this->assertNull($environmentConfig->getUsername());
     $this->assertNull($environmentConfig->getPassword());
 }
Beispiel #2
0
 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;
 }