Pheasant\Database\Mysqli\Transaction::deferEvents PHP Method

deferEvents() public method

Links another Events object such that events in it are corked until either commit/rollback and then uncorked
public deferEvents ( $events )
    public function deferEvents($events)
    {
        $this->_events->register('startTransaction', function () use($events) {
            $events->cork();
        })->register('commitTransaction', function () use($events) {
            $events->uncork();
        })->register('rollbackTransaction', function () use($events) {
            $events->discard()->uncork();
        });
    }

Usage Example

Beispiel #1
0
 public function testDeferEventsFireOnRollback()
 {
     $connection = \Mockery::mock('\\Pheasant\\Database\\Mysqli\\Connection');
     $connection->shouldReceive('execute')->with('BEGIN')->once();
     $connection->shouldReceive('execute')->with('ROLLBACK')->once();
     $events = \Mockery::mock();
     $events->shouldReceive('cork')->once()->andReturn($events);
     $events->shouldReceive('discard')->once()->andReturn($events);
     $events->shouldReceive('uncork')->once()->andReturn($events);
     $transaction = new Transaction($connection);
     $transaction->deferEvents($events);
     $transaction->callback(function () {
         throw new \Exception("Llamas :( :)");
     });
     $this->setExpectedException('\\Exception');
     $transaction->execute();
 }