/**
  * @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;
 }
Exemple #2
0
 /**
  * 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));
     }
 }