Connection::__construct

public Connection::__construct(\PDO $connection, array $connection_options)

Constructs a \Drupal\Core\Database\Driver\sqlite\Connection object.

Overrides Connection::__construct

File

core/lib/Drupal/Core/Database/Driver/sqlite/Connection.php, line 49

Class

Connection
SQLite implementation of \Drupal\Core\Database\Connection.

Namespace

Drupal\Core\Database\Driver\sqlite

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public function __construct(\PDO $connection, array $connection_options) {
  // We don't need a specific PDOStatement class here, we simulate it in
  // static::prepare().
  $this->statementClass = NULL;
 
  parent::__construct($connection, $connection_options);
 
  // This driver defaults to transaction support, except if explicitly passed FALSE.
  $this->transactionSupport = $this->transactionalDDLSupport = !isset($connection_options['transactions']) || $connection_options['transactions'] !== FALSE;
 
  $this->connectionOptions = $connection_options;
 
  // Attach one database for each registered prefix.
  $prefixes = $this->prefixes;
  foreach ($prefixes as &$prefix) {
    // Empty prefix means query the main database -- no need to attach anything.
    if (!empty($prefix)) {
      // Only attach the database once.
      if (!isset($this->attachedDatabases[$prefix])) {
        $this->attachedDatabases[$prefix] = $prefix;
        if ($connection_options['database'] === ':memory:') {
          // In memory database use ':memory:' as database name. According to
          // http://www.sqlite.org/inmemorydb.html it will open a unique
          // database so attaching it twice is not a problem.
          $this->query('ATTACH DATABASE :database AS :prefix', array(':database' => $connection_options['database'], ':prefix' => $prefix));
        }
        else {
          $this->query('ATTACH DATABASE :database AS :prefix', array(':database' => $connection_options['database'] . '-' . $prefix, ':prefix' => $prefix));
        }
      }
 
      // Add a ., so queries become prefix.table, which is proper syntax for
      // querying an attached database.
      $prefix .= '.';
    }
  }
  // Regenerate the prefixes replacement table.
  $this->setPrefix($prefixes);
}
doc_Drupal
2025-01-10 15:47:30
Comments
Leave a Comment

Please login to continue.