for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace App\Infrastructure\Doctrine\Transactions;
use App\Infrastructure\Doctrine\DoctrineEntityManagerAware;
use App\Infrastructure\Transactions\TransactionFactoryInterface;
use App\Infrastructure\Transactions\TransactionInterface;
use Doctrine\Persistence\ManagerRegistry;
abstract class DoctrineTransactionFactory extends DoctrineEntityManagerAware implements TransactionFactoryInterface
{
public function __construct(
ManagerRegistry $managerRegistry,
)
parent::__construct($managerRegistry);
}
/**
* Resets Entity Manager, if the current one is closed.
*
* @param $func
* @return TransactionInterface
*/
public function createTransaction($func): TransactionInterface
$em = $this->getEntityManager();
if(!$em->isOpen()) {
$em = $this->managerRegistry->resetManager($this->getManagerName());
return new DoctrineTransaction($em, $func);