public function barLoad(array $config, ContainerBuilder $configuration) { $configuration->setDefinition('project.service.bar', new Definition('FooClass')); $configuration->setParameter('project.parameter.bar', isset($config['foo']) ? $config['foo'] : 'foobar'); $configuration->setDefinition('project.service.foo', new Definition('FooClass')); $configuration->setParameter('project.parameter.foo', isset($config['foo']) ? $config['foo'] : 'foobar'); return $configuration; }
/** * 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; }
/** * Gets an entity manager cache driver definition for metadata, query and result caches. * * @param array $entityManager * @param string $cacheDriver * @param ContainerBuilder $container * @return Definition $cacheDef */ protected function getEntityManagerCacheDefinition(array $entityManager, $cacheDriver, ContainerBuilder $container) { $type = is_array($cacheDriver) && isset($cacheDriver['type']) ? $cacheDriver['type'] : $cacheDriver; if ($type === 'memcache') { $memcacheClass = isset($cacheDriver['class']) ? $cacheDriver['class'] : '%' . sprintf('doctrine.orm.cache.%s_class', $type) . '%'; $cacheDef = new Definition($memcacheClass); $memcacheHost = isset($cacheDriver['host']) ? $cacheDriver['host'] : '%doctrine.orm.cache.memcache_host%'; $memcachePort = isset($cacheDriver['port']) ? $cacheDriver['port'] : '%doctrine.orm.cache.memcache_port%'; $memcacheInstanceClass = isset($cacheDriver['instance_class']) ? $cacheDriver['instance_class'] : '%doctrine.orm.cache.memcache_instance_class%'; $memcacheInstance = new Definition($memcacheInstanceClass); $memcacheInstance->addMethodCall('connect', array($memcacheHost, $memcachePort)); $container->setDefinition(sprintf('doctrine.orm.%s_memcache_instance', $entityManager['name']), $memcacheInstance); $cacheDef->addMethodCall('setMemcache', array(new Reference(sprintf('doctrine.orm.%s_memcache_instance', $entityManager['name'])))); } else { $cacheDef = new Definition('%' . sprintf('doctrine.orm.cache.%s_class', $type) . '%'); } return $cacheDef; }
/** * Loads the templating configuration. * * @param array $config An array of configuration settings * @param \Symfony\Components\DependencyInjection\ContainerBuilder $container A ContainerBuilder instance */ public function templatingLoad($config, ContainerBuilder $container) { if (!$container->hasDefinition('templating')) { $loader = new XmlFileLoader($container, __DIR__ . '/../Resources/config'); $loader->load($this->resources['templating']); } if (array_key_exists('escaping', $config)) { $container->setParameter('templating.output_escaper', $config['escaping']); } if (array_key_exists('assets_version', $config)) { $container->setParameter('templating.assets.version', $config['assets_version']); } // path for the filesystem loader if (isset($config['path'])) { $container->setParameter('templating.loader.filesystem.path', $config['path']); } // loaders if (isset($config['loader'])) { $loaders = array(); $ids = is_array($config['loader']) ? $config['loader'] : array($config['loader']); foreach ($ids as $id) { $loaders[] = new Reference($id); } if (1 === count($loaders)) { $container->setAlias('templating.loader', (string) $loaders[0]); } else { $container->getDefinition('templating.loader.chain')->addArgument($loaders); $container->setAlias('templating.loader', 'templating.loader.chain'); } } // cache? $container->setParameter('templating.loader.cache.path', null); if (isset($config['cache'])) { // wrap the loader with some cache $container->setDefinition('templating.loader.wrapped', $container->findDefinition('templating.loader')); $container->setDefinition('templating.loader', $container->getDefinition('templating.loader.cache')); $container->setParameter('templating.loader.cache.path', $config['cache']); } }
/** * Loads the configured document manager metadata cache driver. * * @param array $config A configured document manager array * @param ContainerBuilder $container A ContainerBuilder instance */ protected function loadDocumentManagerMetadataCacheDriver(array $documentManager, ContainerBuilder $container) { $metadataCacheDriver = $container->getParameter('doctrine.odm.mongodb.metadata_cache_driver'); $dmMetadataCacheDriver = isset($documentManager['metadata_cache_driver']) ? $documentManager['metadata_cache_driver'] : $metadataCacheDriver; $type = is_array($dmMetadataCacheDriver) && isset($dmMetadataCacheDriver['type']) ? $dmMetadataCacheDriver['type'] : $dmMetadataCacheDriver; if ($type === 'memcache') { $memcacheClass = isset($dmMetadataCacheDriver['class']) ? $dmMetadataCacheDriver['class'] : '%' . sprintf('doctrine.odm.mongodb.cache.%s_class', $type) . '%'; $cacheDef = new Definition($memcacheClass); $memcacheHost = isset($dmMetadataCacheDriver['host']) ? $dmMetadataCacheDriver['host'] : '%doctrine.odm.mongodb.cache.memcache_host%'; $memcachePort = isset($dmMetadataCacheDriver['port']) ? $dmMetadataCacheDriver['port'] : '%doctrine.odm.mongodb.cache.memcache_port%'; $memcacheInstanceClass = isset($dmMetadataCacheDriver['instance_class']) ? $dmMetadataCacheDriver['instance_class'] : '%doctrine.odm.mongodb.cache.memcache_instance_class%'; $memcacheInstance = new Definition($memcacheInstanceClass); $memcacheInstance->addMethodCall('connect', array($memcacheHost, $memcachePort)); $container->setDefinition(sprintf('doctrine.odm.mongodb.%s_memcache_instance', $documentManager['name']), $memcacheInstance); $cacheDef->addMethodCall('setMemcache', array(new Reference(sprintf('doctrine.odm.mongodb.%s_memcache_instance', $documentManager['name'])))); } else { $cacheDef = new Definition('%' . sprintf('doctrine.odm.mongodb.cache.%s_class', $type) . '%'); } $container->setDefinition(sprintf('doctrine.odm.mongodb.%s_metadata_cache', $documentManager['name']), $cacheDef); }
/** * @covers Symfony\Components\DependencyInjection\ContainerBuilder::findDefinition */ public function testFindDefinition() { $container = new ContainerBuilder(); $container->setDefinition('foo', $definition = new Definition('FooClass')); $container->setAlias('bar', 'foo'); $container->setAlias('foobar', 'bar'); $this->assertEquals($definition, $container->findDefinition('foobar'), '->findDefinition() returns a Definition'); }