function Database::parseConnectionInfo
Same name and namespace in other branches
- 11.x core/lib/Drupal/Core/Database/Database.php \Drupal\Core\Database\Database::parseConnectionInfo()
- 10 core/lib/Drupal/Core/Database/Database.php \Drupal\Core\Database\Database::parseConnectionInfo()
- 9 core/lib/Drupal/Core/Database/Database.php \Drupal\Core\Database\Database::parseConnectionInfo()
- 8.9.x core/lib/Drupal/Core/Database/Database.php \Drupal\Core\Database\Database::parseConnectionInfo()
- 7.x includes/database/database.inc \Database::parseConnectionInfo()
Process the configuration file for database information.
Parameters
UnprocessedConnectionInfoArray|list<UnprocessedConnectionInfoArray> $info: The database connection information, as defined in settings.php. The structure of this array depends on the database driver it is connecting to.
Return value
ConnectionInfoArray A validated connection info array.
1 call to Database::parseConnectionInfo()
- Database::addConnectionInfo in core/
lib/ Drupal/ Core/ Database/ Database.php - Adds database connection information for a given key/target.
File
-
core/
lib/ Drupal/ Core/ Database/ Database.php, line 255
Class
- Database
- Primary front-controller for the database system.
Namespace
Drupal\Core\DatabaseCode
final public static function parseConnectionInfo(array $info) : array {
// If there is no "driver" property, then we assume it's an array of
// possible connections for this target. Pick one at random. That allows
// us to have, for example, multiple replica servers.
if (empty($info['driver'])) {
$info_pick = $info[mt_rand(0, count($info) - 1)];
}
/** @var UnprocessedConnectionInfoArray $connection_info */
$connection_info = $info_pick ?? $info;
// Prefix information, default to an empty prefix.
$connection_info['prefix'] = $connection_info['prefix'] ?? '';
// Backwards compatibility layer for Drupal 8 style database connection
// arrays. Those have the wrong 'namespace' key set, or not set at all
// for core supported database drivers.
if (empty($connection_info['namespace']) || str_starts_with($connection_info['namespace'], 'Drupal\\Core\\Database\\Driver\\')) {
switch (strtolower($connection_info['driver'])) {
case 'mysql':
$connection_info['namespace'] = 'Drupal\\mysql\\Driver\\Database\\mysql';
break;
case 'pgsql':
$connection_info['namespace'] = 'Drupal\\pgsql\\Driver\\Database\\pgsql';
break;
case 'sqlite':
$connection_info['namespace'] = 'Drupal\\sqlite\\Driver\\Database\\sqlite';
break;
}
}
// Backwards compatibility layer for Drupal 8 style database connection
// arrays. Those do not have the 'autoload' key set for core database
// drivers.
if (empty($connection_info['autoload']) && isset($connection_info['namespace'])) {
switch (trim($connection_info['namespace'], '\\')) {
case "Drupal\\mysql\\Driver\\Database\\mysql":
$connection_info['autoload'] = "core/modules/mysql/src/Driver/Database/mysql/";
break;
case "Drupal\\pgsql\\Driver\\Database\\pgsql":
$connection_info['autoload'] = "core/modules/pgsql/src/Driver/Database/pgsql/";
break;
case "Drupal\\sqlite\\Driver\\Database\\sqlite":
$connection_info['autoload'] = "core/modules/sqlite/src/Driver/Database/sqlite/";
break;
}
}
assert(isset($connection_info['namespace']));
assert(isset($connection_info['autoload']));
return $connection_info;
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.