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

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