function Transaction::__construct

Same name in other branches
  1. 9 core/lib/Drupal/Core/Database/Transaction.php \Drupal\Core\Database\Transaction::__construct()
  2. 8.9.x core/lib/Drupal/Core/Database/Transaction.php \Drupal\Core\Database\Transaction::__construct()
  3. 11.x core/lib/Drupal/Core/Database/Transaction.php \Drupal\Core\Database\Transaction::__construct()

File

core/lib/Drupal/Core/Database/Transaction.php, line 55

Class

Transaction
A wrapper class for creating and managing database transactions.

Namespace

Drupal\Core\Database

Code

public function __construct(Connection $connection, $name = NULL, string $id = '') {
    // Transactions rely on objects being destroyed in order to be committed.
    // PHP makes no guarantee about the order in which objects are destroyed so
    // ensure all transactions are committed on shutdown.
    Database::commitAllOnShutdown();
    if ($connection->transactionManager()) {
        $this->connection = $connection;
        $this->name = $name;
        return;
    }
    // Start of BC layer.
    $this->connection = $connection;
    // If there is no transaction depth, then no transaction has started. Name
    // the transaction 'drupal_transaction'.
    // @phpstan-ignore-next-line
    if (!($depth = $connection->transactionDepth())) {
        $this->name = 'drupal_transaction';
    }
    elseif (!$name) {
        $this->name = 'savepoint_' . $depth;
    }
    else {
        $this->name = $name;
    }
    // @phpstan-ignore-next-line
    $this->connection
        ->pushTransaction($this->name);
    // End of BC layer.
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.