Внедрение зависимости в репозиторий сущностей

Есть ли простой способ внедрить зависимость в каждый репозиторий экземпляр в Doctrine2?

Я попытался прослушать событие loadClassMetadata и использовать setter inj действия в репозитории, но это, естественно, привело к бесконечному циклу, так как вызов 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;
}

Любые идеи ?

26
задан Hubert Perron 16 November 2011 в 14:18
поделиться