vendor/doctrine/doctrine-bundle/Registry.php line 15

Open in your IDE?
  1. <?php
  2. namespace Doctrine\Bundle\DoctrineBundle;
  3. use Doctrine\ORM\EntityManagerInterface;
  4. use Doctrine\ORM\ORMException;
  5. use ProxyManager\Proxy\LazyLoadingInterface;
  6. use Psr\Container\ContainerInterface;
  7. use Symfony\Bridge\Doctrine\ManagerRegistry;
  8. use Symfony\Contracts\Service\ResetInterface;
  9. /**
  10.  * References all Doctrine connections and entity managers in a given Container.
  11.  */
  12. class Registry extends ManagerRegistry implements ResetInterface
  13. {
  14.     /**
  15.      * @param string[] $connections
  16.      * @param string[] $entityManagers
  17.      * @param string   $defaultConnection
  18.      * @param string   $defaultEntityManager
  19.      */
  20.     public function __construct(ContainerInterface $container, array $connections, array $entityManagers$defaultConnection$defaultEntityManager)
  21.     {
  22.         $this->container $container;
  23.         parent::__construct('ORM'$connections$entityManagers$defaultConnection$defaultEntityManager'Doctrine\ORM\Proxy\Proxy');
  24.     }
  25.     /**
  26.      * Resolves a registered namespace alias to the full namespace.
  27.      *
  28.      * This method looks for the alias in all registered entity managers.
  29.      *
  30.      * @see Configuration::getEntityNamespace
  31.      *
  32.      * @param string $alias The alias
  33.      *
  34.      * @return string The full namespace
  35.      */
  36.     public function getAliasNamespace($alias)
  37.     {
  38.         foreach (array_keys($this->getManagers()) as $name) {
  39.             try {
  40.                 return $this->getManager($name)->getConfiguration()->getEntityNamespace($alias);
  41.             } catch (ORMException $e) {
  42.             }
  43.         }
  44.         throw ORMException::unknownEntityNamespace($alias);
  45.     }
  46.     public function reset() : void
  47.     {
  48.         foreach ($this->getManagerNames() as $managerName => $serviceId) {
  49.             $this->resetOrClearManager($managerName$serviceId);
  50.         }
  51.     }
  52.     private function resetOrClearManager(string $managerNamestring $serviceId) : void
  53.     {
  54.         if (! $this->container->initialized($serviceId)) {
  55.             return;
  56.         }
  57.         $manager $this->container->get($serviceId);
  58.         assert($manager instanceof EntityManagerInterface);
  59.         if (! $manager instanceof LazyLoadingInterface || $manager->isOpen()) {
  60.             $manager->clear();
  61.             return;
  62.         }
  63.         $this->resetManager($managerName);
  64.     }
  65. }