PDO::ERRMODE_EXCEPTION ]; if (!empty($params['persistent'])) { $driverOptions[PDO::ATTR_PERSISTENT] = true; } return new PaperPDO( $this->constructPdoDsn($params), $params['user'] ?? '', $params['password'] ?? '', $driverOptions, ); } /** * Constructs the Sqlite PDO DSN. * * @param array $params */ private function constructPdoDsn(array $params): string { $dsn = 'mysql:'; if (isset($params['host']) && $params['host'] !== '') { $dsn .= 'host=' . $params['host'] . ';'; } if (isset($params['port'])) { $dsn .= 'port=' . $params['port'] . ';'; } if (isset($params['dbname'])) { $dsn .= 'dbname=' . $params['dbname'] . ';'; }elseif (isset($params['path'])) { $dsn .= 'dbname=' . $params['path'] . ';'; } if (isset($params['unix_socket'])) { $dsn .= 'unix_socket=' . $params['unix_socket'] . ';'; } if (isset($params['options']['charset'])) { $dsn .= sprintf('charset=%s;', $params['options']['charset']); } return $dsn; } public function createDatabasePlatform(PaperConnection $connection): PlatformInterface { return new MariaDBPlatform($connection, $this->createDatabaseSchema()); } public function createDatabaseSchema(): MariaDBSchema { return new MariaDBSchema(); } }