anboo / transaction-manager
此包最新版本(dev-master)没有提供许可证信息。
事务管理 psr
dev-master
2021-01-11 19:43 UTC
Requires
- psr/log: ^1.1@dev
- symfony/stopwatch: 5.*
This package is auto-updated.
Last update: 2024-09-12 03:57:15 UTC
README
事务管理器
基本用法
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'; }
合并事务
use Anboo\TransactionManager\TransactionManager; $transactionManagerA = new TransactionManager(); $transactionManagerA->addTransaction(...); $transactionManagerB = new TransactionManager(); $transactionManagerB->addTransaction(...); $transactionManagerB->addTransaction(...); $transactionManagerB->addTransaction(...); $transactionManagerB->merge($transactionManagerA); $transactionManagerB->run();
忽略事务中的特定异常
use Anboo\TransactionManager\TransactionManager; $transactionManagerA = new TransactionManager(); $transactionManagerA->addTransaction(...); $transactionManagerA->addIgnoreException(UserAlreadyExistsException::class); $transactionManagerA->run();