Symfony 3.3 DI。访问服务工厂

时间:2017-09-16 17:05:05

标签: php symfony dependency-injection doctrine factory

我想将所有Doctrine存储库注册为服务

我找到了这种方法:How to configure dependency injection for repository class in symfony 3

但是这样我必须手动注册每个存储库。

我想创建一些只为存储库类名称为我实例化存储库的Service Factory

这样的事情:

namespace AppBundle\Service;

use Doctrine\ORM\EntityManagerInterface;

class RepositoryFactory
{
    /**
     * @var EntityManagerInterface
     */
    private $manager;

    public function __construct(EntityManagerInterface $manager)
    {
        $this->manager = $manager;
    }

    public function getRepository(string $repositoryClass)
    {
        // do some magic that somehow obtaining actual repo
        return $repo;
    }
}

service.yml

AppBundle\Service\RepositoryFactory:
  autowire: true

但是Symfony的文档没有说明如何在这个工厂中传递你想要实例化的服务名称(如果可能的话)

0 个答案:

没有答案