Skip to content

anboo/transaction-manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Transaction Manager

Basic usage

use Anboo\TransactionManager\TransactionManager;
use Anboo\TransactionManager\TransactionInterface;

$transactionManager = new TransactionManager();
$transactionManager->addTransaction(fn() => file_get_contents('http://'));

$transactionManager->addTransaction(new class implements TransactionInterface {
    public function up()
    {
        $this->remoteServiceClient->createEntity(...);
    }

    public function down()
    {
        $this->remoteServiceClient->removeEntity(...);
    }
});

$transactionManager->addTransaction(fn() => /* Database Insert */)

try {
    $transactionManager->run();
} catch (Throwable $e) {
    echo 'All completed transaction has been rollback';
}

Merge transactions

use Anboo\TransactionManager\TransactionManager;

$transactionManagerA = new TransactionManager();
$transactionManagerA->addTransaction(...);

$transactionManagerB = new TransactionManager();
$transactionManagerB->addTransaction(...);
$transactionManagerB->addTransaction(...);
$transactionManagerB->addTransaction(...);

$transactionManagerB->merge($transactionManagerA);
$transactionManagerB->run();

Ignore specific exception for transaction

use Anboo\TransactionManager\TransactionManager;

$transactionManagerA = new TransactionManager();
$transactionManagerA->addTransaction(...);
$transactionManagerA->addIgnoreException(UserAlreadyExistsException::class);

$transactionManagerA->run();

About

Transaction manager

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages