sk / transaction
Library to handle transaction during multiple actions
v1.0.0
2016-11-20 10:10 UTC
Requires
- psr/log: >=1.0.0
Requires (Dev)
- doctrine/dbal: >2.0
- friendsofphp/php-cs-fixer: ^1.11
- phpunit/phpunit: ~4.0 | ~5.0
- satooshi/php-coveralls: dev-master
This package is auto-updated.
Last update: 2025-02-07 01:57:43 UTC
README
Introduction
This library claims to provide an easy way to implement secure transactions during nearly everything.
Installation
This library can be easily installed via composer
composer require sk/transaction
or just add it to your composer.json file directly.
Usage
As a basic usage example, the CallbackTransaction is used to demonstrate the behaviour during three api calls:
<?php use SK\Transaction\CallbackTransaction; use SK\Transaction\Exception\RollbackException; use SK\Transaction\ParameterBag; use Acme\Api1Client; use Acme\Api2Client; use Acme\Api3Client; $api1Client = new Api1Client(); $callbackTransaction = new CallbackTransaction( // Do something important function (ParameterBag $parameters) use ($api1Client) { $api1Client->doSomethingImportant($parameters); }, // Roll back if an exception in one of the next transaction(s) occurred. // For more information see interface \SK\Transaction\OwnExceptionRollback function () use ($api1Client) { $api1Client->rollback(); } ); $api2Client = new Api2Client(); $callbackTransaction2 = new CallbackTransaction( function (ParameterBag $parameters = null) use ($api2Client) { $api2Client->doSomethingImportant($parameters); }, function () use ($api2Client) { $api2Client->rollback(); } ); $api3Client = new Api3Client(); $callbackTransaction2 = new CallbackTransaction( function (ParameterBag $parameters) use ($api3Client) { $api3Client->doSomethingImportant($parameters); }, function () use ($api3Client) { // This will never executed. For more information see \SK\Transaction\OwnExceptionRollback $api3Client->rollback(); } ); $callbackTransaction->append($callbackTransaction2); $callbackTransaction->append($callbackTransaction3); // or // $callbackTransaction2->append($callbackTransaction3); try { $callbackTransaction->execute(); } catch (RollbackException $e) { // Something really bad happens // But you can get the Exception which causes the rollback $e->getOrigin(); // And you can get the exception which occurred during rollback $e->getPrevious(); } catch (\Exception $e) { // An exception occurred, but all executed actions was rolled back successfully }
ToDo
- Write more documentation
- Fix typos
License
This library is under the MIT license. See the complete license in the LICENCE file.