/** * Customizes the Container instance. * * @param \Symfony\Components\DependencyInjection\ParameterBag\ParameterBagInterface $parameterBag A ParameterBagInterface instance * * @return \Symfony\Components\DependencyInjection\ContainerBuilder A ContainerBuilder instance */ public function buildContainer(ParameterBagInterface $parameterBag) { ContainerBuilder::registerExtension(new KernelExtension()); $container = new ContainerBuilder(); $loader = new XmlFileLoader($container, array(__DIR__ . '/../Resources/config', __DIR__ . '/Resources/config')); $loader->load('services.xml'); if ($parameterBag->get('kernel.debug')) { $loader->load('debug.xml'); $container->setDefinition('event_dispatcher', $container->findDefinition('debug.event_dispatcher')); } return $container; }
/** * Customizes the Container instance. * * @param \Symfony\Components\DependencyInjection\ParameterBag\ParameterBagInterface $parameterBag A ParameterBagInterface instance * * @return \Symfony\Components\DependencyInjection\ContainerBuilder A ContainerBuilder instance */ public function buildContainer(ParameterBagInterface $parameterBag) { ContainerBuilder::registerExtension(new WebExtension($parameterBag->get('kernel.bundle_dirs'), $parameterBag->get('kernel.bundles'))); $dirs = array('%kernel.root_dir%/views/%%bundle%%/%%controller%%/%%name%%%%format%%.%%renderer%%'); foreach ($parameterBag->get('kernel.bundle_dirs') as $dir) { $dirs[] = $dir . '/%%bundle%%/Resources/views/%%controller%%/%%name%%%%format%%.%%renderer%%'; } $parameterBag->set('templating.loader.filesystem.path', $dirs); $container = new ContainerBuilder(); if ($parameterBag->get('kernel.debug')) { $loader = new XmlFileLoader($container, __DIR__ . '/Resources/config'); $loader->load('debug.xml'); } return $container; }
/** * Customizes the Container instance. * * @param \Symfony\Components\DependencyInjection\ParameterBag\ParameterBagInterface $parameterBag A ParameterBagInterface instance * * @return \Symfony\Components\DependencyInjection\ContainerBuilder A ContainerBuilder instance */ public function buildContainer(ParameterBagInterface $parameterBag) { ContainerBuilder::registerExtension(new DoctrineExtension($parameterBag->get('kernel.bundle_dirs'), $parameterBag->get('kernel.bundles'), $parameterBag->get('kernel.cache_dir'))); }
public function testEntityManagerMemcacheMetadataCacheDriverConfiguration() { $container = new ContainerBuilder(); $loader = $this->getDoctrineExtensionLoader(); $container->registerExtension($loader); $this->loadFromFile($container, 'orm_service_simple_single_entity_manager'); $container->freeze(); $definition = $container->getDefinition('doctrine.orm.default_metadata_cache'); $this->assertEquals('Doctrine\\Common\\Cache\\MemcacheCache', $definition->getClass()); $calls = $definition->getMethodCalls(); $this->assertEquals('setMemcache', $calls[0][0]); $this->assertEquals('doctrine.orm.default_memcache_instance', (string) $calls[0][1][0]); $definition = $container->getDefinition('doctrine.orm.default_memcache_instance'); $this->assertEquals('Memcache', $definition->getClass()); $calls = $definition->getMethodCalls(); $this->assertEquals('connect', $calls[0][0]); $this->assertEquals('localhost', $calls[0][1][0]); $this->assertEquals(11211, $calls[0][1][1]); }
/** * Customizes the Container instance. * * @param \Symfony\Components\DependencyInjection\ParameterBag\ParameterBagInterface $parameterBag A ParameterBagInterface instance * * @return \Symfony\Components\DependencyInjection\ContainerBuilder A ContainerBuilder instance */ public function buildContainer(ParameterBagInterface $parameterBag) { ContainerBuilder::registerExtension(new ZendExtension()); }
public function testExtensions() { $container = new ContainerBuilder(); $container->registerExtension(new \ProjectExtension()); $container->registerExtension(new \ProjectWithXsdExtension()); $loader = new ProjectLoader2($container, self::$fixturesPath . '/xml'); // extension without an XSD $loader->load('extensions/services1.xml'); $container->freeze(); $services = $container->getDefinitions(); $parameters = $container->getParameterBag()->all(); $this->assertTrue(isset($services['project.service.bar']), '->load() parses extension elements'); $this->assertTrue(isset($parameters['project.parameter.bar']), '->load() parses extension elements'); $this->assertEquals('BAR', $services['project.service.foo']->getClass(), '->load() parses extension elements'); $this->assertEquals('BAR', $parameters['project.parameter.foo'], '->load() parses extension elements'); // extension with an XSD $container = new ContainerBuilder(); $container->registerExtension(new \ProjectExtension()); $container->registerExtension(new \ProjectWithXsdExtension()); $loader = new ProjectLoader2($container, self::$fixturesPath . '/xml'); $loader->load('extensions/services2.xml'); $container->freeze(); $services = $container->getDefinitions(); $parameters = $container->getParameterBag()->all(); $this->assertTrue(isset($services['project.service.bar']), '->load() parses extension elements'); $this->assertTrue(isset($parameters['project.parameter.bar']), '->load() parses extension elements'); $this->assertEquals('BAR', $services['project.service.foo']->getClass(), '->load() parses extension elements'); $this->assertEquals('BAR', $parameters['project.parameter.foo'], '->load() parses extension elements'); $loader = new ProjectLoader2(new ContainerBuilder(), self::$fixturesPath . '/xml'); // extension with an XSD (does not validate) try { $loader->load('extensions/services3.xml'); $this->fail('->load() throws an InvalidArgumentException if the configuration does not validate the XSD'); } catch (\Exception $e) { $this->assertInstanceOf('\\InvalidArgumentException', $e, '->load() throws an InvalidArgumentException if the configuration does not validate the XSD'); $this->assertRegexp('/The attribute \'bar\' is not allowed/', $e->getMessage(), '->load() throws an InvalidArgumentException if the configuration does not validate the XSD'); } // non-registered extension try { $loader->load('extensions/services4.xml'); $this->fail('->load() throws an InvalidArgumentException if the tag is not valid'); } catch (\Exception $e) { $this->assertInstanceOf('\\InvalidArgumentException', $e, '->load() throws an InvalidArgumentException if the tag is not valid'); $this->assertStringStartsWith('There is no extension able to load the configuration for "project:bar" (in', $e->getMessage(), '->load() throws an InvalidArgumentException if the tag is not valid'); } // non-existent tag for a known extension try { $loader->load('extensions/services5.xml'); $this->fail('->load() throws an InvalidArgumentException if a tag is not valid for a given extension'); } catch (\Exception $e) { $this->assertInstanceOf('\\InvalidArgumentException', $e, '->load() throws an InvalidArgumentException if a tag is not valid for a given extension'); $this->assertStringStartsWith('The tag "projectwithxsd:foobar" is not defined in the "projectwithxsd" extension.', $e->getMessage(), '->load() throws an InvalidArgumentException if a tag is not valid for a given extension'); } }
public function testExtensions() { $container = new ContainerBuilder(); $container->registerExtension(new \ProjectExtension()); $loader = new ProjectLoader3($container, self::$fixturesPath . '/yaml'); $loader->load('services10.yml'); $container->freeze(); $services = $container->getDefinitions(); $parameters = $container->getParameterBag()->all(); $this->assertTrue(isset($services['project.service.bar']), '->load() parses extension elements'); $this->assertTrue(isset($parameters['project.parameter.bar']), '->load() parses extension elements'); $this->assertEquals('BAR', $services['project.service.foo']->getClass(), '->load() parses extension elements'); $this->assertEquals('BAR', $parameters['project.parameter.foo'], '->load() parses extension elements'); try { $loader->load('services11.yml'); $this->fail('->load() throws an InvalidArgumentException if the tag is not valid'); } catch (\Exception $e) { $this->assertInstanceOf('\\InvalidArgumentException', $e, '->load() throws an InvalidArgumentException if the tag is not valid'); $this->assertStringStartsWith('There is no extension able to load the configuration for "foobar.foobar" (in', $e->getMessage(), '->load() throws an InvalidArgumentException if the tag is not valid'); } try { $loader->load('services12.yml'); $this->fail('->load() throws an InvalidArgumentException if an extension is not loaded'); } catch (\Exception $e) { $this->assertInstanceOf('\\InvalidArgumentException', $e, '->load() throws an InvalidArgumentException if an extension is not loaded'); $this->assertStringStartsWith('The "foobar" tag is not valid (in', $e->getMessage(), '->load() throws an InvalidArgumentException if an extension is not loaded'); } }
/** * @covers Symfony\Components\DependencyInjection\ContainerBuilder::registerExtension * @covers Symfony\Components\DependencyInjection\ContainerBuilder::getExtension */ public function testExtension() { $container = new ContainerBuilder(); $container->registerExtension($extension = new \ProjectExtension()); $this->assertTrue($container->getExtension('project') === $extension, '->registerExtension() registers an extension'); }