anboo / transaction-manager
Transaction manager psr
Installs: 1
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/anboo/transaction-manager
Requires
- psr/log: ^1.1@dev
- symfony/stopwatch: 5.*
This package is auto-updated.
Last update: 2025-09-12 06:02:25 UTC
README
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();