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 EntityManager
instâ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
}
}