library process-transaction
Offer a transaction like support for php processes
needle-project/process-transaction
Offer a transaction like support for php processes
- Monday, May 14, 2018
- by adrian.tilita
- Repository
- 1 Watchers
- 0 Stars
- 28 Installations
- PHP
- 0 Dependents
- 0 Suggesters
- 0 Forks
- 0 Open issues
- 2 Versions
- 0 % Grown
, (*1)
Transaction Process
This library helps you run your process with capabilities of rollback in case one of the processes fails! (Similar to Database Transactions)., (*2)
1. Install
composer require needle-project/transactional
2. Usage
A simple usage:, (*3)
<?php
require_once 'vendor/autoload.php';
$paymentService = new class {
public function chargeMoney() {
// your logic
echo "Customer has been charge!\n";
}
public function refund() {
echo "Customer has been refunded!\n";
}
};
$stockReservationService = new class {
public function reserveStock() {
echo "Could not reserve stock!\n";
throw new \Exception("The trigger of failed process");
}
};
$charge = new \NeedleProject\Transaction\Process(
function () use ($paymentService) {
return $paymentService->chargeMoney();
},
function () use ($paymentService) {
return $paymentService->refund();
},
'Payment Actions'
);
$reserveStock = new \NeedleProject\Transaction\Process(
function () use ($stockReservationService) {
return $stockReservationService->reserveStock();
},
function () {
echo "This will not be executed!\n";
},
"Stock Reserve"
);
// Processing an order
$executor = new \NeedleProject\Transaction\Executor();
$executor->addProcess($charge);
$executor->addProcess($reserveStock);
// Executing the processes
try {
$executor->execute();
} catch (\Exception $e) {
$executor->rollBack();
}
// Getting the process result
echo $charge->getExecutionResult() . "\n";
echo $reserveStock->getRollBackResult() . "\n";
dev-master
9999999-dev
Offer a transaction like support for php processes
Sources
Download
MIT
The Requires
The Development Requires
v0.0.1
0.0.1.0
Offer a transaction like support for php processes
Sources
Download
MIT
The Requires
The Development Requires