public function Connection::__construct in Drupal 9
Same name in this branch
- 9 core/lib/Drupal/Core/Database/Connection.php \Drupal\Core\Database\Connection::__construct()
- 9 core/lib/Drupal/Core/Database/Driver/sqlite/Connection.php \Drupal\Core\Database\Driver\sqlite\Connection::__construct()
- 9 core/lib/Drupal/Core/Database/Driver/pgsql/Connection.php \Drupal\Core\Database\Driver\pgsql\Connection::__construct()
- 9 core/lib/Drupal/Core/Database/Driver/mysql/Connection.php \Drupal\Core\Database\Driver\mysql\Connection::__construct()
Same name and namespace in other branches
- 8 core/lib/Drupal/Core/Database/Connection.php \Drupal\Core\Database\Connection::__construct()
Constructs a Connection object.
Parameters
\PDO $connection: An object of the PDO class representing a database connection.
array $connection_options: An array of options for the connection. May include the following:
- prefix
- namespace
- Other driver-specific options.
An 'extra_prefix' option may be present to allow BC for attaching per-table prefixes, but it is meant for internal use only.
4 calls to Connection::__construct()
- Connection::__construct in core/
lib/ Drupal/ Core/ Database/ Driver/ sqlite/ Connection.php - Constructs a \Drupal\Core\Database\Driver\sqlite\Connection object.
- Connection::__construct in core/
lib/ Drupal/ Core/ Database/ Driver/ pgsql/ Connection.php - Constructs a connection object.
- Connection::__construct in core/
lib/ Drupal/ Core/ Database/ Driver/ mysql/ Connection.php - Constructs a Connection object.
- StubConnection::__construct in core/
tests/ Drupal/ Tests/ Core/ Database/ Stub/ StubConnection.php - Constructs a Connection object.
4 methods override Connection::__construct()
- Connection::__construct in core/
lib/ Drupal/ Core/ Database/ Driver/ sqlite/ Connection.php - Constructs a \Drupal\Core\Database\Driver\sqlite\Connection object.
- Connection::__construct in core/
lib/ Drupal/ Core/ Database/ Driver/ pgsql/ Connection.php - Constructs a connection object.
- Connection::__construct in core/
lib/ Drupal/ Core/ Database/ Driver/ mysql/ Connection.php - Constructs a Connection object.
- StubConnection::__construct in core/
tests/ Drupal/ Tests/ Core/ Database/ Stub/ StubConnection.php - Constructs a Connection object.
File
- core/
lib/ Drupal/ Core/ Database/ Connection.php, line 233
Class
- Connection
- Base Database API class.
Namespace
Drupal\Core\DatabaseCode
public function __construct(\PDO $connection, array $connection_options) {
if ($this->identifierQuotes === NULL) {
@trigger_error('In drupal:10.0.0 not setting the $identifierQuotes property in the concrete Connection class will result in an RuntimeException. See https://www.drupal.org/node/2986894', E_USER_DEPRECATED);
$this->identifierQuotes = [
'',
'',
];
}
assert(count($this->identifierQuotes) === 2 && Inspector::assertAllStrings($this->identifierQuotes), '\\Drupal\\Core\\Database\\Connection::$identifierQuotes must contain 2 string values');
// The 'transactions' option is deprecated.
if (isset($connection_options['transactions'])) {
@trigger_error('Passing a \'transactions\' connection option to ' . __METHOD__ . ' is deprecated in drupal:9.1.0 and is removed in drupal:10.0.0. All database drivers must support transactions. See https://www.drupal.org/node/2278745', E_USER_DEPRECATED);
unset($connection_options['transactions']);
}
// Manage the table prefix.
if (isset($connection_options['prefix']) && is_array($connection_options['prefix'])) {
if (count($connection_options['prefix']) > 1) {
// If there are keys left besides the 'default' one, we are in a
// multi-prefix scenario (for per-table prefixing, or migrations).
// In that case, we put the non-default keys in a 'extra_prefix' key
// to avoid mixing up with the normal 'prefix', which is a string since
// Drupal 9.1.0.
$prefix = $connection_options['prefix']['default'] ?? '';
unset($connection_options['prefix']['default']);
if (isset($connection_options['extra_prefix'])) {
$connection_options['extra_prefix'] = array_merge($connection_options['extra_prefix'], $connection_options['prefix']);
}
else {
$connection_options['extra_prefix'] = $connection_options['prefix'];
}
}
else {
$prefix = $connection_options['prefix']['default'] ?? '';
}
$connection_options['prefix'] = $prefix;
}
// Initialize and prepare the connection prefix.
if (!isset($connection_options['extra_prefix'])) {
$prefix = $connection_options['prefix'] ?? '';
}
else {
$default_prefix = $connection_options['prefix'] ?? '';
$prefix = $connection_options['extra_prefix'];
$prefix['default'] = $default_prefix;
}
$this
->setPrefix($prefix);
// Work out the database driver namespace if none is provided. This normally
// written to setting.php by installer or set by
// \Drupal\Core\Database\Database::parseConnectionInfo().
if (empty($connection_options['namespace'])) {
$connection_options['namespace'] = (new \ReflectionObject($this))
->getNamespaceName();
}
// The support for database drivers where the namespace that starts with
// Drupal\\Driver\\Database\\ is deprecated.
if (strpos($connection_options['namespace'], 'Drupal\\Driver\\Database') === 0) {
@trigger_error('Support for database drivers located in the "drivers/lib/Drupal/Driver/Database" directory is deprecated in drupal:9.1.0 and is removed in drupal:10.0.0. Contributed and custom database drivers should be provided by modules and use the namespace "Drupal\\MODULE_NAME\\Driver\\Database\\DRIVER_NAME". See https://www.drupal.org/node/3123251', E_USER_DEPRECATED);
}
// Set a Statement class, unless the driver opted out.
// @todo remove this in Drupal 10 https://www.drupal.org/node/3177490
if (!empty($this->statementClass)) {
@trigger_error('\\Drupal\\Core\\Database\\Connection::$statementClass is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Database drivers should use or extend StatementWrapper instead, and encapsulate client-level statement objects. See https://www.drupal.org/node/3177488', E_USER_DEPRECATED);
$connection
->setAttribute(\PDO::ATTR_STATEMENT_CLASS, [
$this->statementClass,
[
$this,
],
]);
}
$this->connection = $connection;
$this->connectionOptions = $connection_options;
}