%PDF- %PDF-
Direktori : /www/old2/_muzikoterapie/uloziste.eacm.cz/3rdparty/doctrine/dbal/src/Driver/PDO/SQLite/ |
Current File : /www/old2/_muzikoterapie/uloziste.eacm.cz/3rdparty/doctrine/dbal/src/Driver/PDO/SQLite/Driver.php |
<?php namespace Doctrine\DBAL\Driver\PDO\SQLite; use Doctrine\DBAL\Driver\AbstractSQLiteDriver; use Doctrine\DBAL\Driver\PDO\Connection; use Doctrine\DBAL\Driver\PDO\Exception; use Doctrine\DBAL\Platforms\SqlitePlatform; use PDO; use PDOException; use function array_merge; final class Driver extends AbstractSQLiteDriver { /** @var mixed[] */ private $userDefinedFunctions = [ 'sqrt' => ['callback' => [SqlitePlatform::class, 'udfSqrt'], 'numArgs' => 1], 'mod' => ['callback' => [SqlitePlatform::class, 'udfMod'], 'numArgs' => 2], 'locate' => ['callback' => [SqlitePlatform::class, 'udfLocate'], 'numArgs' => -1], ]; /** * {@inheritdoc} * * @return Connection */ public function connect(array $params) { $driverOptions = $params['driverOptions'] ?? []; if (isset($driverOptions['userDefinedFunctions'])) { $this->userDefinedFunctions = array_merge( $this->userDefinedFunctions, $driverOptions['userDefinedFunctions'] ); unset($driverOptions['userDefinedFunctions']); } try { $pdo = new PDO( $this->constructPdoDsn($params), $params['user'] ?? '', $params['password'] ?? '', $driverOptions ); } catch (PDOException $exception) { throw Exception::new($exception); } foreach ($this->userDefinedFunctions as $fn => $data) { $pdo->sqliteCreateFunction($fn, $data['callback'], $data['numArgs']); } return new Connection($pdo); } /** * Constructs the Sqlite PDO DSN. * * @param mixed[] $params */ private function constructPdoDsn(array $params): string { $dsn = 'sqlite:'; if (isset($params['path'])) { $dsn .= $params['path']; } elseif (isset($params['memory'])) { $dsn .= ':memory:'; } return $dsn; } }