vendor/doctrine/dbal/src/Driver/PDO/MySQL/Driver.php line 40

Open in your IDE?
  1. <?php
  2. namespace Doctrine\DBAL\Driver\PDO\MySQL;
  3. use Doctrine\DBAL\Driver\AbstractMySQLDriver;
  4. use Doctrine\DBAL\Driver\PDO\Connection;
  5. use Doctrine\DBAL\Driver\PDO\Exception;
  6. use PDO;
  7. use PDOException;
  8. use SensitiveParameter;
  9. final class Driver extends AbstractMySQLDriver
  10. {
  11.     /**
  12.      * {@inheritDoc}
  13.      *
  14.      * @return Connection
  15.      */
  16.     public function connect(
  17.         #[SensitiveParameter]
  18.         array $params
  19.     ) {
  20.         $driverOptions $params['driverOptions'] ?? [];
  21.         if (! empty($params['persistent'])) {
  22.             $driverOptions[PDO::ATTR_PERSISTENT] = true;
  23.         }
  24.         $safeParams $params;
  25.         unset($safeParams['password'], $safeParams['url']);
  26.         try {
  27.             $pdo = new PDO(
  28.                 $this->constructPdoDsn($safeParams),
  29.                 $params['user'] ?? '',
  30.                 $params['password'] ?? '',
  31.                 $driverOptions,
  32.             );
  33.         } catch (PDOException $exception) {
  34.             throw Exception::new($exception);
  35.         }
  36.         return new Connection($pdo);
  37.     }
  38.     /**
  39.      * Constructs the MySQL PDO DSN.
  40.      *
  41.      * @param mixed[] $params
  42.      */
  43.     private function constructPdoDsn(array $params): string
  44.     {
  45.         $dsn 'mysql:';
  46.         if (isset($params['host']) && $params['host'] !== '') {
  47.             $dsn .= 'host=' $params['host'] . ';';
  48.         }
  49.         if (isset($params['port'])) {
  50.             $dsn .= 'port=' $params['port'] . ';';
  51.         }
  52.         if (isset($params['dbname'])) {
  53.             $dsn .= 'dbname=' $params['dbname'] . ';';
  54.         }
  55.         if (isset($params['unix_socket'])) {
  56.             $dsn .= 'unix_socket=' $params['unix_socket'] . ';';
  57.         }
  58.         if (isset($params['charset'])) {
  59.             $dsn .= 'charset=' $params['charset'] . ';';
  60.         }
  61.         return $dsn;
  62.     }
  63. }