function Database::addConnectionInfo
Same name in other branches
- 7.x includes/database/database.inc \Database::addConnectionInfo()
- 9 core/lib/Drupal/Core/Database/Database.php \Drupal\Core\Database\Database::addConnectionInfo()
- 8.9.x core/lib/Drupal/Core/Database/Database.php \Drupal\Core\Database\Database::addConnectionInfo()
- 10 core/lib/Drupal/Core/Database/Database.php \Drupal\Core\Database\Database::addConnectionInfo()
Adds database connection information for a given key/target.
This method allows to add new connections at runtime.
Under normal circumstances the preferred way to specify database credentials is via settings.php. However, this method allows them to be added at arbitrary times, such as during unit tests, when connecting to admin-defined third party databases, etc. Use \Drupal\Core\Database\Database::setActiveConnection to select the connection to use.
If the given key/target pair already exists, this method will be ignored.
Parameters
string $key: The database key.
string $target: The database target name.
array $info: The database connection information, as defined in settings.php. The structure of this array depends on the database driver it is connecting to.
\Composer\Autoload\ClassLoader $class_loader: The class loader. Used for adding the database driver to the autoloader if $info['autoload'] is set.
string $app_root: The app root.
See also
\Drupal\Core\Database\Database::setActiveConnection
48 calls to Database::addConnectionInfo()
- ConnectionTest::testConnectionOptions in core/
tests/ Drupal/ KernelTests/ Core/ Database/ ConnectionTest.php - Tests the connection options of the active database.
- ConnectionTest::testConnectionRouting in core/
tests/ Drupal/ KernelTests/ Core/ Database/ ConnectionTest.php - Tests that connections return appropriate connection objects.
- ConnectionTest::testConnectionRoutingOverride in core/
tests/ Drupal/ KernelTests/ Core/ Database/ ConnectionTest.php - Tests that connections return appropriate connection objects.
- ConnectionTest::testFindCallerFromDebugBacktrace in core/
tests/ Drupal/ Tests/ Core/ Database/ ConnectionTest.php - Tests that the proper caller is retrieved from the backtrace.
- ConnectionTest::testPerTablePrefixOption in core/
tests/ Drupal/ KernelTests/ Core/ Database/ ConnectionTest.php - Tests per-table prefix connection option.
File
-
core/
lib/ Drupal/ Core/ Database/ Database.php, line 270
Class
- Database
- Primary front-controller for the database system.
Namespace
Drupal\Core\DatabaseCode
public static final function addConnectionInfo($key, $target, array $info, $class_loader = NULL, $app_root = NULL) {
if (empty(self::$databaseInfo[$key][$target])) {
$info = self::parseConnectionInfo($info);
self::$databaseInfo[$key][$target] = $info;
// If the database driver is provided by a module, then its code may need
// to be instantiated prior to when the module's root namespace is added
// to the autoloader, because that happens during service container
// initialization but the container definition is likely in the database.
// Therefore, allow the connection info to specify an autoload directory
// for the driver.
if (isset($info['autoload']) && $class_loader && $app_root) {
$class_loader->addPsr4($info['namespace'] . '\\', $app_root . '/' . $info['autoload']);
// When the database driver is extending from other database drivers,
// then add autoload directory for the parent database driver modules
// as well.
if (!empty($info['dependencies'])) {
assert(is_array($info['dependencies']));
foreach ($info['dependencies'] as $dependency) {
if (isset($dependency['namespace']) && isset($dependency['autoload'])) {
$class_loader->addPsr4($dependency['namespace'] . '\\', $app_root . '/' . $dependency['autoload']);
}
}
}
}
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.