Skip to content

Instantly share code, notes, and snippets.

@beberlei
Created August 6, 2012 09:44
Show Gist options
  • Save beberlei/3272909 to your computer and use it in GitHub Desktop.
Save beberlei/3272909 to your computer and use it in GitHub Desktop.
Transactional Service Proxy
<?php
class TxController extends Controller
{
public function context($id)
{
return new TxProxy($this->get($id), $this->get('doctrine.orm.default_entity_manager'));
}
}
<?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);
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment