public
Last active

Transactional Service Proxy

  • Download Gist
TxController.php
PHP
1 2 3 4 5 6 7 8 9
<?php
 
class TxController extends Controller
{
public function context($id)
{
return new TxProxy($this->get($id), $this->get('doctrine.orm.default_entity_manager'));
}
}
TxProxy.php
PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
<?php
 
use Doctrine\ORM\EntityManager;
 
class TxProxy
{
private $service;
private $entityManager;
 
public function __construct($service, EntityManager $entityManager)
{
$this->service = $service;
$this->entityManager = $entityManager;
}
 
public function __call($method, $args)
{
$callback = array($this->service, $method);
return $this->entityManager->transactional(function() use ($callback, $args) {
return call_user_func_array($callback, $args);
});
}
}

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.