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

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