/** * Test commit. * * @param Connection $connection * The connection to perform tests on. * * @dataProvider connectionDataProvider */ public function testOnCommit(Connection $connection) { $callback = function () { return 'testresult'; }; $operation = $connection->onCommit($callback); $this->assertFalse($connection->hasOperation($operation), 'Operation was not properly added.'); $connection->startTransaction(); $operation = $connection->onCommit($callback); $this->assertTrue($connection->hasOperation($operation), 'Operation was not properly added.'); $connection->commitTransaction(); $check = $operation->getResult(); $this->assertSame('testresult', $check, 'Operation was not properly added.'); }
<?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();