我想将所有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的文档没有说明如何在这个工厂中传递你想要实例化的服务名称(如果可能的话)