Вход Регистрация
Файл: vendor/doctrine/dbal/src/Driver/PDO/MySQL/Driver.php
Строк: 63
<?php

namespace DoctrineDBALDriverPDOMySQL;

use 
DoctrineDBALDriverAbstractMySQLDriver;
use 
DoctrineDBALDriverPDOConnection;
use 
DoctrineDBALDriverPDOException;
use 
PDO;
use 
PDOException;
use 
SensitiveParameter;

final class 
Driver extends AbstractMySQLDriver
{
    
/**
     * {@inheritDoc}
     *
     * @return Connection
     */
    
public function connect(
        
#[SensitiveParameter]
        
array $params
    
) {
        
$driverOptions $params['driverOptions'] ?? [];

        if (! empty(
$params['persistent'])) {
            
$driverOptions[PDO::ATTR_PERSISTENT] = true;
        }

        
$safeParams $params;
        unset(
$safeParams['password'], $safeParams['url']);

        try {
            
$pdo = new PDO(
                
$this->constructPdoDsn($safeParams),
                
$params['user'] ?? '',
                
$params['password'] ?? '',
                
$driverOptions,
            );
        } catch (
PDOException $exception) {
            throw 
Exception::new($exception);
        }

        return new 
Connection($pdo);
    }

    
/**
     * Constructs the MySQL PDO DSN.
     *
     * @param mixed[] $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'] . ';';
        }

        if (isset(
$params['unix_socket'])) {
            
$dsn .= 'unix_socket=' $params['unix_socket'] . ';';
        }

        if (isset(
$params['charset'])) {
            
$dsn .= 'charset=' $params['charset'] . ';';
        }

        return 
$dsn;
    }
}
Онлайн: 2
Реклама