/** * @return ApplicationInterface * * @throws BBException */ private function initEntityManager() { if (!$this->container->getDefinition('em')->isSynthetic()) { return; } if (null === ($doctrineConfig = $this->getConfig()->getRawSection('doctrine'))) { throw new BBException('None database configuration found'); } if (!isset($doctrineConfig['dbal'])) { throw new BBException('None dbal configuration found'); } if (!isset($doctrineConfig['dbal']['proxy_ns'])) { $doctrineConfig['dbal']['proxy_ns'] = 'Proxies'; } if (!isset($doctrineConfig['dbal']['proxy_dir'])) { $doctrineConfig['dbal']['proxy_dir'] = $this->getCacheDir() . '/' . 'Proxies'; } if (isset($doctrineConfig['orm'])) { $doctrineConfig['dbal']['orm'] = $doctrineConfig['orm']; } // Init ORM event $r = new \ReflectionClass('Doctrine\\ORM\\Events'); $definition = new Definition('Doctrine\\Common\\EventManager'); $definition->addMethodCall('addEventListener', [$r->getConstants(), new Reference('doctrine.listener')]); $this->container->setDefinition('doctrine.event_manager', $definition); try { $loggerId = 'logging'; if ($this->isDebugMode()) { // doctrine data collector $this->getContainer()->get('data_collector.doctrine')->addLogger('default', $this->getContainer()->get('doctrine.dbal.logger.profiling')); $loggerId = 'doctrine.dbal.logger.profiling'; } $definition = new Definition('Doctrine\\ORM\\EntityManager', [$doctrineConfig['dbal'], new Reference($loggerId), new Reference('doctrine.event_manager'), new Reference('service_container')]); $definition->setFactory(['BackBee\\Util\\Doctrine\\EntityManagerCreator', 'create']); $this->container->setDefinition('em', $definition); $this->debug(sprintf('%s(): Doctrine EntityManager initialized', __METHOD__)); } catch (\Exception $e) { $this->warning(sprintf('%s(): Cannot initialize Doctrine EntityManager', __METHOD__)); } return $this; }
/** * Sets bundle's Config definition into dependency injection container. * * @param string $configId * @param string $baseDir */ public function loadConfigDefinition($configId, $baseDir) { if (false === $this->container->hasDefinition($configId)) { $this->container->setDefinition($configId, $this->buildConfigDefinition($baseDir)); } }