Independent EntityRepository in Doctrine 2

Então você quer seu repositório como serviço independente, sem tratamento especial e obtendo via getRepository()método? Não é tão difícil. Vamos apresentar nosso ancestral independente abstrato:

abstract class IndependentEntityRepository extends DoctrineORMEntityRepository
{
public function __construct(DoctrineORMEntityManager $em)
{
$metadata
= $em->getClassMetadata($this->getEntityClass());
parent
::__construct($em, $metadata);
}

abstract public function getEntityClass();
}

E agora podemos definir nosso repositório específico, que pode ser instanciado em qualquer lugar e requer apenas uma EntityManagerinstância. Não há mais dependência de EntityManager::getRepository().

class ArticlesRepository extends IndependentEntityRepository
{
public function getEntityClass()
{
return Article:: CLASS; // this syntax is available since PHP 5.5
}
}