classes/Database/ConnectionFactory.php
public function makePdo(array $config, $connection = null)
	{
		if (!isset($config['driver']) && !isset($config['dsn'])) {
			throw new InvalidArgumentException('DSN or driver must be set');
		}

		$options = isset($config['pdo_options']) ? $config['pdo_options'] : [];
		unset($config['pdo_options']);
		$options = array_replace($this->defaultPdoOptions, $options);

		$initCommands = isset($config['pdo_init_commands'])
			? $config['pdo_init_commands'] : [];
		unset($config['pdo_init_commands']);

		// SQLite needs special treatment
		if (isset($config['driver']) && $config['driver'] == 'sqlite') {
			$this->validate($config, 'path', $connection);
			$dsn = $this->makeSqliteDsn($config['path']);
			return $this->makePdoInner($dsn, null, null, $options, $initCommands);
		} elseif (isset($config['dsn']) && strpos($config['dsn'], 'sqlite:') === 0) {
			return $this->makePdoInner($config['dsn'], null, null,
				$options, $initCommands);
		}

		$this->validate($config, 'username', $connection, false);
		$username = $config['username'];
		unset($config['username']);

		$this->validate($config, 'password', $connection, true);
		$password = $config['password'];
		unset($config['password']);

		if (isset($config['dsn'])) {
			$dsn = $config['dsn'];
		} else {
			$driver = $config['driver'];
			unset($config['driver']);
			$this->validate($config, 'host', $connection);
			$this->validate($config, 'dbname', $connection);
			$dsn = $this->makeDsn($driver, $config);
		}

		return $this->makePdoInner($dsn, $username, $password, $options, $initCommands);
	}
public function makePdo(array $config, $connection = null)
	{
		if (!isset($config['driver']) && !isset($config['dsn'])) {
			throw new InvalidArgumentException('DSN or driver must be set');
		}

		$options = isset($config['pdo_options']) ? $config['pdo_options'] : [];
		unset($config['pdo_options']);
		$options = array_replace($this->defaultPdoOptions, $options);

		$initCommands = isset($config['pdo_init_commands'])
			? $config['pdo_init_commands'] : [];
		unset($config['pdo_init_commands']);

		// SQLite needs special treatment
		if (isset($config['driver']) && $config['driver'] == 'sqlite') {
			$this->validate($config, 'path', $connection);
			$dsn = $this->makeSqliteDsn($config['path']);
			return $this->makePdoInner($dsn, null, null, $options, $initCommands);
		} elseif (isset($config['dsn']) && strpos($config['dsn'], 'sqlite:') === 0) {
			return $this->makePdoInner($config['dsn'], null, null,
				$options, $initCommands);
		}

		$this->validate($config, 'username', $connection, false);
		$username = $config['username'];
		unset($config['username']);

		$this->validate($config, 'password', $connection, true);
		$password = $config['password'];
		unset($config['password']);

		if (isset($config['dsn'])) {
			$dsn = $config['dsn'];
		} else {
			$driver = $config['driver'];
			unset($config['driver']);
			$this->validate($config, 'host', $connection);
			$this->validate($config, 'dbname', $connection);
			$dsn = $this->makeDsn($driver, $config);
		}

		return $this->makePdoInner($dsn, $username, $password, $options, $initCommands);
	}
public function makePdo ( array $ config , $ connection = null ) { if ( ! isset ( $ config [ 'driver' ] ) && ! isset ( $ config [ 'dsn' ] ) ) { throw new InvalidArgumentException ( 'DSN or driver must be set' ) ; } $ options = isset ( $ config [ 'pdo_options' ] ) ? $ config [ 'pdo_options' ] : [ ] ; unset ( $ config [ 'pdo_options' ] ) ; $ options = array_replace ( $ this -> defaultPdoOptions , $ options ) ; $ initCommands = isset ( $ config [ 'pdo_init_commands' ] ) ? $ config [ 'pdo_init_commands' ] : [ ] ; unset ( $ config [ 'pdo_init_commands' ] ) ; // SQLite needs special treatment if ( isset ( $ config [ 'driver' ] ) && $ config [ 'driver' ] == 'sqlite' ) { $ this -> validate ( $ config , 'path' , $ connection ) ; $ dsn = $ this -> makeSqliteDsn ( $ config [ 'path' ] ) ; return $ this -> makePdoInner ( $ dsn , null , null , $ options , $ initCommands ) ; } elseif ( isset ( $ config [ 'dsn' ] ) && strpos ( $ config [ 'dsn' ] , 'sqlite:' ) === 0 ) { return $ this -> makePdoInner ( $ config [ 'dsn' ] , null , null , $ options , $ initCommands ) ; } $ this -> validate ( $ config , 'username' , $ connection , false ) ; $ username = $ config [ 'username' ] ; unset ( $ config [ 'username' ] ) ; $ this -> validate ( $ config , 'password' , $ connection , true ) ; $ password = $ config [ 'password' ] ; unset ( $ config [ 'password' ] ) ; if ( isset ( $ config [ 'dsn' ] ) ) { $ dsn = $ config [ 'dsn' ] ; } else { $ driver = $ config [ 'driver' ] ; unset ( $ config [ 'driver' ] ) ; $ this -> validate ( $ config , 'host' , $ connection ) ; $ this -> validate ( $ config , 'dbname' , $ connection ) ; $ dsn = $ this -> makeDsn ( $ driver , $ config ) ; } return $ this -> makePdoInner ( $ dsn , $ username , $ password , $ options , $ initCommands ) ; }
Create a new PDO instance.

@param  array  $config
@param  string $connection Name of the connection - used for exception
messages

@return PDO

@throws InvalidArgumentException If connection is incorrectly configured
@throws CannotConnectException If construction of PDO object fails
Create a new PDO instance .