Да, это несоответствие API вызывает большое раздражение.
В качестве обходного пути я упаковываю фактическую строку уведомления о доставке с необязательным именем пользователя и паролем, используя синтаксис строки запроса, а затем анализирую и создаю так:
parse_str($connection_string, $params);
$pdo = new PDO($params['dsn'], @$params['username'], @$params['password']);
Так что для PostgreSQL используйте $connection_string
, например:
dsn=pgsql:host=localhost;dbname=test;user=root;password=root
А для MySQL используйте строку вроде:
dsn=mysql:host=localhost;dbname=testdb&username=root&password=root
Вид хромает, но все просто и работает.