Exemplo n.º 1
0
 /**
  * Loads and returns bundle's Config.
  *
  * @param string $serviceId
  * @param string $baseDir
  *
  * @return
  */
 private function loadAndGetBundleConfigByBaseDir($serviceId, $baseDir)
 {
     $configId = str_replace('%bundle_service_id%', $serviceId, BundleInterface::CONFIG_SERVICE_ID_PATTERN);
     $this->loadConfigDefinition($configId, $baseDir);
     $bundleConfig = $this->container->get($configId)->getBundleConfig();
     if (isset($bundleConfig['config_per_site']) && true === $bundleConfig['config_per_site']) {
         $definition = $this->container->getDefinition($configId);
         $definition->addTag('config_per_site');
     }
     return $this->container->get($configId);
 }
Exemplo n.º 2
0
 /**
  * @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;
 }
Exemplo n.º 3
0
 /**
  * @depends testHasDefinition
  */
 public function testGetDefinition(ContainerInterface $container)
 {
     try {
         $container->getDefinition('service_zero');
         $this->fail('Raise of InvalidArgumentException expected.');
     } catch (\Exception $e) {
         $this->assertInstanceOf('Symfony\\Component\\DependencyInjection\\Exception\\InvalidArgumentException', $e);
     }
     // Test restoration of synthetic service definition
     $this->assertFalse($container->getDefinition('service_four')->isSynthetic());
     $this->assertTrue($container->getDefinition('service_five')->isSynthetic());
     // Test restoration of service definition tag
     $this->assertTrue($container->getDefinition('service_three')->hasTag('dumpable'));
     $this->assertTrue($container->getDefinition('service_four')->hasTag('foo'));
     $this->assertTrue($container->getDefinition('service_four')->hasTag('bar'));
     // Test restoration of service public, scope, abstract and file values
     $this->assertFalse($container->getDefinition('service_six')->isPublic());
     $this->assertEquals($container->getDefinition('service_seven')->getScope(), 'prototype');
     $this->assertEquals($container->getDefinition('service_seven')->getFile(), '/foo/bar');
     $this->assertTrue($container->getDefinition('service_ten')->isAbstract());
     // Test restoration of service configurator
     $configurator = $container->getDefinition('service_seven')->getConfigurator();
     $this->assertNotNull($configurator);
     $this->assertEquals(2, count($configurator));
     $this->assertInstanceOf('Symfony\\Component\\DependencyInjection\\Reference', $configurator[0]);
     $this->assertEquals('service_six', $configurator[0]->__toString());
     $this->assertEquals('getSize', $configurator[1]);
     // Test restoration of service factory class, factory service and factory method
     $factory = $container->getDefinition('service_eight')->getFactory();
     $this->assertEquals('\\DateTime', $factory[0]);
     $this->assertEquals('getLastErrors', $factory[1]);
     $factory = $container->getDefinition('service_nine')->getFactory();
     $this->assertEquals('service_zero', $factory[0]->__toString());
     $this->assertEquals('get', $factory[1]);
     // Test restoration of service with parent (without compilation)
     $this->assertTrue($container->hasDefinition('service_ten'));
     $this->assertInstanceOf('Symfony\\Component\\DependencyInjection\\DefinitionDecorator', $container->getDefinition('service_eleven'));
     $this->assertEmpty($container->getDefinition('service_eleven')->getMethodCalls());
     $parent_method_calls = $container->getDefinition('service_ten')->getMethodCalls();
     $this->assertNotEmpty($parent_method_calls);
     // Test restoration of service with parent (with compilation)
     $dumper = new PhpArrayDumper($this->container);
     $container = new ContainerProxy();
     $container->init(unserialize($dumper->dump(array('do_compile' => true))));
     $this->assertFalse($container->hasDefinition('service_ten'));
     $this->assertInstanceOf('Symfony\\Component\\DependencyInjection\\Definition', $container->getDefinition('service_eleven'));
     $this->assertEquals($parent_method_calls, $container->getDefinition('service_eleven')->getMethodCalls());
 }