Есть ли простой способ вставить зависимость в каждый экземпляр репозитория в Doctrine2?
Я попытался прослушивать событие loadClassMetadata
и использовать инъекцию установщика в репозитории, но это, естественно, привело к бесконечному циклу, поскольку вызов getRepository
в событии вызвал одно и то же событие.
После просмотра метода Doctrine\ORM\EntityManager::getRepository
кажется, что репозитории вообще не используют инъекцию зависимостей, вместо этого они создаются на уровне функции:
public function getRepository($entityName)
{
$entityName = ltrim($entityName, '\\');
if (isset($this->repositories[$entityName])) {
return $this->repositories[$entityName];
}
$metadata = $this->getClassMetadata($entityName);
$customRepositoryClassName = $metadata->customRepositoryClassName;
if ($customRepositoryClassName !== null) {
$repository = new $customRepositoryClassName($this, $metadata);
} else {
$repository = new EntityRepository($this, $metadata);
}
$this->repositories[$entityName] = $repository;
return $repository;
}
Любые идеи?