X-Git-Url: https://git.rapsys.eu/userbundle/blobdiff_plain/7b065b7bc56a349a0e70f455ec90a91faea8acf9..35e4301f462bb79099427f7669d22081ad860d8b:/Factory.php?ds=sidebyside diff --git a/Factory.php b/Factory.php index 3c5f3d6..3a8702a 100644 --- a/Factory.php +++ b/Factory.php @@ -14,16 +14,19 @@ namespace Rapsys\UserBundle; use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\Repository\RepositoryFactory as RepositoryFactoryInterface; use Doctrine\Persistence\ObjectRepository; + +use Psr\Container\ContainerInterface; + +use Rapsys\PackBundle\Util\SluggerUtil; + use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\Routing\RouterInterface; use Symfony\Contracts\Translation\TranslatorInterface; -use Rapsys\PackBundle\Util\SluggerUtil; - /** * This factory is used to create default repository objects for entities at runtime. */ -final class Factory implements RepositoryFactoryInterface { +class Factory implements RepositoryFactoryInterface { /** * The list of EntityRepository instances */ @@ -32,13 +35,14 @@ final class Factory implements RepositoryFactoryInterface { /** * Initializes a new RepositoryFactory instance * + * @param ContainerInterface $container The container instance * @param RequestStack $request The request stack * @param RouterInterface $router The router instance * @param SluggerUtil $slugger The SluggerUtil instance * @param TranslatorInterface $translator The TranslatorInterface instance * @param string $locale The current locale */ - public function __construct(private RequestStack $request, private RouterInterface $router, private SluggerUtil $slugger, private TranslatorInterface $translator, private string $locale) { + public function __construct(private ContainerInterface $container, private RequestStack $request, private RouterInterface $router, private SluggerUtil $slugger, private TranslatorInterface $translator, private string $locale) { } /** @@ -64,7 +68,7 @@ final class Factory implements RepositoryFactoryInterface { * @param EntityManagerInterface $entityManager The EntityManager instance. * @param string $entityName The name of the entity. */ - private function createRepository(EntityManagerInterface $entityManager, string $entityName): ObjectRepository { + protected function createRepository(EntityManagerInterface $entityManager, string $entityName): ObjectRepository { //Get class metadata $metadata = $entityManager->getClassMetadata($entityName); @@ -73,10 +77,10 @@ final class Factory implements RepositoryFactoryInterface { //Set to current locale //XXX: current request is not yet populated in constructor - $this->locale = $this->request->getCurrentRequest()->getLocale() ?? $this->locale; + $this->locale = $this->request->getCurrentRequest()?->getLocale() ?? $this->locale; //Return repository class instance - //XXX: router, slugger, translator and locale arguments will be ignored by default - return new $repositoryClass($entityManager, $metadata, $this->router, $this->slugger, $this->translator, $this->locale); + //XXX: container, router, slugger, translator and locale arguments will be ignored by default + return new $repositoryClass($entityManager, $metadata, $this->container, $this->router, $this->slugger, $this->translator, $this->locale); } }