<?php namespace Gielfeldt\TransactionalPHP\Example; require 'vendor/autoload.php'; use Gielfeldt\TransactionalPHP\Connection; $connection = new Connection(); // Start outer transaction. $connection->startTransaction(); $connection->onCommit(function () { print "THIS WILL BE PRINTED, BECAUSE THIS WILL BE COMMITTED\n"; }); // Start inner transaction. $connection->startTransaction(); $connection->onCommit(function () { print "THIS WILL NOT BE PRINTED, BECAUSE THIS WILL BE ROLLED BACK\n"; }); // Rollback inner transaction. $connection->rollbackTransaction(); // Commit inner transaction. $connection->commitTransaction();
/** * Test transaction depth. * * @param Connection $connection * The connection to perform tests on. * * @dataProvider connectionDataProvider */ public function testDepth(Connection $connection) { $this->assertEquals(0, $connection->getDepth(), 'Depth was not correct'); $connection->startTransaction(); $this->assertEquals(1, $connection->getDepth(), 'Depth was not correct'); $connection->startTransaction(); $this->assertEquals(2, $connection->getDepth(), 'Depth was not correct'); $connection->rollbackTransaction(); $this->assertEquals(1, $connection->getDepth(), 'Depth was not correct'); $connection->commitTransaction(); $this->assertEquals(0, $connection->getDepth(), 'Depth was not correct'); }