Inlm\DibiTransactions
, (*1)
Nested transactions for Dibi., (*2)
, (*3)
Installation
Download a latest package or use Composer:, (*4)
composer require inlm/dibi-transactions
Inlm\Dibi-transactions requires PHP 8.0 or later and Dibi., (*5)
Usage
``` php
$connection = new Dibi\Connection();
$transactions = new Inlm\DibiTransactions\Transactions($connection);, (*6)
### `transactional()`
``` php
$value = $transactions->transactional(function () use ($connection) {
$connection->query('...');
$connection->query('...');
return $value;
});
Transaction
``` php
$transaction = $transactions->createTransaction();, (*7)
try {
$connection->query('...');
$connection->query('...');
$transaction->commit();, (*8)
} catch (Exception $e) {
$transaction->rollback();
throw $e;
}, (*9)
Object `Transaction` throws error if you forget to call `commit()` or `rollback()`. It can be connected with [Tracy](https://tracy.nette.org/):
``` php
$transactions->onUnresolved[] = array(Inlm\DibiTransactions\Bridges\Tracy::class, 'logUnresolved');
begin / commit / rollback
``` php
try {
$transactions->begin();
$connection->query('...');
$connection->query('...');
$transactions->commit();, (*10)
} catch (Exception $e) {
$transactions->rollback();
}
```, (*11)
License: New BSD License
Author: Jan Pecha, https://www.janpecha.cz/, (*12)