1. Go to this page and download the library: Download johmanx10/transaction library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
johmanx10 / transaction example snippets
use Johmanx10\Transaction\Transaction;
use Johmanx10\Transaction\OperationInterface;
use Johmanx10\Transaction\Exception\TransactionRolledBackException;
use Johmanx10\Transaction\Exception\FailedRollbackException;
use Johmanx10\Transaction\Visitor\OperationVisitorInterface;
/** @var OperationInterface[] $operations */
$transaction = new Transaction(...$operations);
try {
/** @var OperationVisitorInterface[] $visitors */
$transaction->commit(...$visitors);
} catch (TransactionRolledBackException $rollback) {
// Do something with the operations that were rolled back.
// This exception contains a method to get all failed operations, paired
// with any exception that triggered the rollback.
} catch (FailedRollbackException $rollbackException) {
// Do something if an operation could not be rolled back.
// This exception contains the affected operation, as well as a list of
// operations that have successfully rolled back up to the point where the
// current operation could not.
}
use Johmanx10\Transaction\Exception\OperationExceptionInterface;
use Johmanx10\Transaction\OperationHandler;
use Johmanx10\Transaction\OperationInterface;
use Johmanx10\Transaction\Visitor\LogOperationVisitor;
use Psr\Log\LoggerInterface;
$handler = new OperationHandler();
$handler->attachVisitor(
/** @var LoggerInterface $logger */
new LogOperationVisitor($logger)
);;
try {
/** @var OperationInterface[] $operations */
$handler->handle(...$operations);
} catch (OperationExceptionInterface $exception) {
// Get the formatted internal exception.
$formatted = $exception->getMessage();
// Get the operation that caused the exception.
$operation = $exception->getOperation();
// Get the exception that shows the context of the failure.
$context = $exception->getPrevious();
}
use Johmanx10\Transaction\Operation;
use Johmanx10\Transaction\Transaction;
$appDir = __DIR__ . '/my-app';
$transaction = new Transaction(
// Create the app directory.
new Operation(
// Create the new directory.
function () use ($appDir) {
if (!file_exists($appDir) && !@mkdir($appDir)) {
throw new RuntimeException(
sprintf('Could not create directory: "%s"', $appDir)
);
}
},
// Roll back the operation.
function () use ($appDir) {
if (file_exists($appDir) && !@rmdir($appDir)) {
throw new RuntimeException(
sprintf('Could not remove directory: "%s"', $appDir)
);
}
},
// Set the operation description.
sprintf('Create directory: "%s"', $appDir)
)
);
use Johmanx10\Transaction\OperationInterface;
use Johmanx10\Transaction\Formatter\OperationFormatterInterface;
/**
* @var OperationFormatterInterface $formatter
* @var OperationInterface $operation
*/
$formatter->format($operation);
use Johmanx10\Transaction\Transaction;
use Johmanx10\Transaction\OperationInterface;
use Johmanx10\Transaction\Exception\TransactionRolledBackException;
use Johmanx10\Transaction\Formatter\RollbackFormatter;
/** @var OperationInterface[] $operations */
$transaction = new Transaction(...$operations);
try {
$transaction->commit();
} catch (TransactionRolledBackException $rollback) {
$formatter = new RollbackFormatter();
echo $formatter->format($rollback) . PHP_EOL;
}
use Johmanx10\Transaction\Transaction;
use Johmanx10\Transaction\OperationInterface;
use Johmanx10\Transaction\Exception\FailedRollbackException;
use Johmanx10\Transaction\Formatter\FailedRollbackFormatter;
/** @var OperationInterface[] $operations */
$transaction = new Transaction(...$operations);
try {
$transaction->commit();
} catch (FailedRollbackException $rollback) {
$formatter = new FailedRollbackFormatter();
echo $formatter->format($rollback) . PHP_EOL;
}
use Johmanx10\Transaction\OperationInterface;
use Johmanx10\Transaction\Transaction;
use Johmanx10\Transaction\Visitor\LogOperationVisitor;
use Psr\Log\LoggerInterface;
/** @var LoggerInterface $logger */
$visitor = new LogOperationVisitor($logger);
/** @var OperationInterface[] $operations */
$transaction = new Transaction(...$operations);
$transaction->commit($visitor);
examples/file-operations
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.