Author: Fabien Potencier (fabien@symfony.com)
Inheritance: extends Symfony\Component\DependencyInjection\Container, implements Symfony\Component\DependencyInjection\TaggedContainerInterface
 /**
  * Processes the ContainerBuilder to resolve parameter placeholders.
  *
  * @param ContainerBuilder $container
  *
  * @throws ParameterNotFoundException
  */
 public function process(ContainerBuilder $container)
 {
     $parameterBag = $container->getParameterBag();
     foreach ($container->getDefinitions() as $id => $definition) {
         try {
             $definition->setClass($parameterBag->resolveValue($definition->getClass()));
             $definition->setFile($parameterBag->resolveValue($definition->getFile()));
             $definition->setArguments($parameterBag->resolveValue($definition->getArguments()));
             if ($definition->getFactoryClass(false)) {
                 $definition->setFactoryClass($parameterBag->resolveValue($definition->getFactoryClass(false)));
             }
             $factory = $definition->getFactory();
             if (is_array($factory) && isset($factory[0])) {
                 $factory[0] = $parameterBag->resolveValue($factory[0]);
                 $definition->setFactory($factory);
             }
             $calls = array();
             foreach ($definition->getMethodCalls() as $name => $arguments) {
                 $calls[$parameterBag->resolveValue($name)] = $parameterBag->resolveValue($arguments);
             }
             $definition->setMethodCalls($calls);
             $definition->setProperties($parameterBag->resolveValue($definition->getProperties()));
         } catch (ParameterNotFoundException $e) {
             $e->setSourceId($id);
             throw $e;
         }
     }
     $aliases = array();
     foreach ($container->getAliases() as $name => $target) {
         $aliases[$parameterBag->resolveValue($name)] = $parameterBag->resolveValue($target);
     }
     $container->setAliases($aliases);
     $parameterBag->resolve();
 }
 /**
  * {@inheritDoc}
  */
 public function build(ContainerBuilder $container)
 {
     /** @var  PayumExtension $payumExtension */
     $payumExtension = $container->getExtension('payum');
     $payumExtension->addGatewayFactory(new JmsGatewayFactory());
     $payumExtension->addGatewayFactory(new FooBarGatewayPaymentFactory());
 }
Esempio n. 3
1
 /**
  * {@inheritdoc}
  */
 public function process(ContainerBuilder $container)
 {
     $definition = $container->getDefinition('twig');
     foreach ($container->findTaggedServiceIds('twig.token_parser') as $id => $attributes) {
         $definition->addMethodCall('addTokenParser', [new Reference($id)]);
     }
 }
 /**
  * Allow an extension to prepend the extension configurations.
  *
  * @param \Symfony\Component\DependencyInjection\ContainerBuilder $container
  */
 public function prepend(ContainerBuilder $container)
 {
     $configFile = __DIR__ . '/../Resources/config/templates.yml';
     $config = Yaml::parse(file_get_contents($configFile));
     $container->prependExtensionConfig('ezpublish', $config);
     $container->addResource(new FileResource($configFile));
 }
 /**
  * @param ContainerBuilder $container
  * @param string           $code
  * @param Definition       $formatter
  * @param array            $extensions
  *
  * @return string
  */
 public function createEnvironment(ContainerBuilder $container, $code, Definition $formatter, array $extensions)
 {
     $loader = new Definition('Twig_Loader_String');
     $loader->setPublic(false);
     $container->setDefinition(sprintf('sonata.formatter.twig.loader.%s', $code), $loader);
     $loaderSelector = new Definition('Sonata\\FormatterBundle\\Twig\\Loader\\LoaderSelector', array(new Reference(sprintf('sonata.formatter.twig.loader.%s', $code)), new Reference('twig.loader')));
     $loaderSelector->setPublic(false);
     $env = new Definition('Twig_Environment', array($loaderSelector, array('debug' => false, 'strict_variables' => false, 'charset' => 'UTF-8')));
     $env->setPublic(false);
     $container->setDefinition(sprintf('sonata.formatter.twig.env.%s', $code), $env);
     $sandboxPolicy = new Definition('Sonata\\FormatterBundle\\Twig\\SecurityPolicyContainerAware', array(new Reference('service_container'), $extensions));
     $sandboxPolicy->setPublic(false);
     $container->setDefinition(sprintf('sonata.formatter.twig.sandbox.%s.policy', $code), $sandboxPolicy);
     $sandbox = new Definition('Twig_Extension_Sandbox', array($sandboxPolicy, true));
     $sandbox->setPublic(false);
     $container->setDefinition(sprintf('sonata.formatter.twig.sandbox.%s', $code), $sandbox);
     $env->addMethodCall('addExtension', array(new Reference(sprintf('sonata.formatter.twig.sandbox.%s', $code))));
     foreach ($extensions as $extension) {
         $env->addMethodCall('addExtension', array(new Reference($extension)));
     }
     $lexer = new Definition('Twig_Lexer', array(new Reference(sprintf('sonata.formatter.twig.env.%s', $code)), array('tag_comment' => array('<#', '#>'), 'tag_block' => array('<%', '%>'), 'tag_variable' => array('<%=', '%>'))));
     $lexer->setPublic(false);
     $container->setDefinition(new Reference(sprintf('sonata.formatter.twig.lexer.%s', $code)), $lexer);
     $env->addMethodCall('setLexer', array(new Reference(sprintf('sonata.formatter.twig.lexer.%s', $code))));
     return sprintf('sonata.formatter.twig.env.%s', $code);
 }
 /**
  * @param string                                                    $name
  * @param array                                                     $config
  * @param \Symfony\Component\DependencyInjection\ContainerBuilder   $container
  *
  * @return \Symfony\Component\DependencyInjection\Reference
  */
 private function getConnectionReference($name, array $config, ContainerBuilder $container)
 {
     if (isset($config['connection_id'])) {
         return new Reference($config['connection_id']);
     }
     $host = $config['host'];
     $port = $config['port'];
     $connClass = '%doctrine_cache.redis.connection.class%';
     $connId = sprintf('doctrine_cache.services.%s_redis.connection', $name);
     $connDef = new Definition($connClass);
     $connParams = array($host, $port);
     if (isset($config['timeout'])) {
         $connParams[] = $config['timeout'];
     }
     $connDef->setPublic(false);
     $connDef->addMethodCall('connect', $connParams);
     if (isset($config['password'])) {
         $password = $config['password'];
         $connDef->addMethodCall('auth', array($password));
     }
     if (isset($config['database'])) {
         $database = (int) $config['database'];
         $connDef->addMethodCall('select', array($database));
     }
     $container->setDefinition($connId, $connDef);
     return new Reference($connId);
 }
 private function isIntegrationEnabled(ContainerBuilder $container)
 {
     if (!$container->hasParameter('riemann.integration.monolog')) {
         return false;
     }
     return true === $container->getParameter('riemann.integration.monolog');
 }
Esempio n. 8
0
 public function load(array $configs, ContainerBuilder $container)
 {
     $configuration = new Configuration();
     $appConfig = $this->processConfiguration($configuration, $configs);
     $dashboardDefinition = $container->register('app.dashboard', 'AppBundle\\Dashboard\\Dashboard');
     $dashboardDefinition->addMethodCall('loadFromConfiguration', array($appConfig));
 }
 /**
  * @param ContainerBuilder $container
  * @param string $serviceName
  * @param string $newServiceName
  */
 private function changeService(ContainerBuilder $container, $serviceName, $newServiceName)
 {
     $service = $container->getDefinition($serviceName);
     $newService = $container->getDefinition($newServiceName);
     $container->removeDefinition($serviceName);
     $container->setDefinition($serviceName, $newService);
 }
 /**
  * @param ContainerBuilder $container
  * @param array            $config
  * @param string           $id
  * @param string           $rememberMeServicesId
  *
  * @return array
  */
 protected function getUserProviders(ContainerBuilder $container, $config, $id, $rememberMeServicesId)
 {
     $userProviders = [];
     foreach ($container->findTaggedServiceIds('security.remember_me_aware') as $serviceId => $attributes) {
         foreach ($attributes as $attribute) {
             if (!isset($attribute['id']) || $attribute['id'] !== $id) {
                 continue;
             }
             if (!isset($attribute['provider'])) {
                 throw new \RuntimeException('Each "security.remember_me_aware" tag must have a provider attribute.');
             }
             $userProviders[] = new Reference($attribute['provider']);
             $container->getDefinition($serviceId)->addMethodCall('setRememberMeServices', array(new Reference($rememberMeServicesId)));
         }
     }
     if ($config['user_providers']) {
         $userProviders = array();
         foreach ($config['user_providers'] as $providerName) {
             $userProviders[] = new Reference('security.user.provider.concrete.' . $providerName);
         }
     }
     if (count($userProviders) === 0) {
         throw new \RuntimeException('You must configure at least one remember-me aware listener (such as form-login)
             for each firewall that has organization-remember-me enabled.');
     }
     return $userProviders;
 }
 /**
  * {@inheritdoc}
  */
 public function process(ContainerBuilder $container)
 {
     foreach ($container->findTaggedServiceIds('vlr.model.violation.handler') as $id => $tags) {
         $priority = isset($tags[0]) && isset($tags[0]['priority']) ? $tags[0]['priority'] : null;
         $container->getDefinition('rezzza.violation.handler.manager')->addMethodCall('add', array($container->getDefinition($id), $priority));
     }
 }
 /**
  * {@inheritDoc}
  */
 public function load(array $configs, ContainerBuilder $container)
 {
     $configuration = new Configuration();
     $config = $this->processConfiguration($configuration, $configs);
     $loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
     $loader->load('services.xml');
     if (isset($config['handler_path'])) {
         $container->setParameter('shibboleth.handler_path', $config['handler_path']);
     }
     if (isset($config['secured_handler'])) {
         $container->setParameter('shibboleth.secured_handler', $config['secured_handler']);
     }
     if (isset($config['session_initiator_path'])) {
         $container->setParameter('shibboleth.session_initiator_path', $config['session_initiator_path']);
     }
     if (isset($config['username_attribute'])) {
         $container->setParameter('shibboleth.username_attribute', $config['username_attribute']);
     }
     if (isset($config['attribute_definitions'])) {
         $container->setParameter('shibboleth.attribute_definitions', $config['attribute_definitions']);
     } else {
         $container->setParameter('shibboleth.attribute_definitions', array());
     }
     if (isset($config['use_headers'])) {
         $container->setParameter('shibboleth.use_headers', $config['use_headers']);
     } else {
         $container->setParameter('shibboleth.use_headers', true);
     }
     if (isset($config['logout_target'])) {
         $container->setParameter('shibboleth.logout_target', $config['logout_target']);
     }
 }
Esempio n. 13
0
 /**
  * {@inheritdoc}
  */
 public function prepend(ContainerBuilder $container)
 {
     if (!$container->hasExtension('sylius_order')) {
         throw new \RuntimeException('Please install and configure SyliusOrderBundle in order to use SyliusCartBundle.');
     }
     $container->prependExtensionConfig('sylius_order', array('resources' => array('order' => array('classes' => array('model' => Cart::class)), 'order_item' => array('classes' => array('model' => CartItem::class)))));
 }
 /**
  * {@inheritdoc}
  */
 public function process(ContainerBuilder $container)
 {
     $coordinator = $container->getDefinition('sylius.process.coordinator');
     foreach ($container->findTaggedServiceIds('sylius.process.scenario') as $id => $attributes) {
         $coordinator->addMethodCall('registerScenario', array($attributes[0]['alias'], new Reference($id)));
     }
 }
 public function setParameterSection(ContainerBuilder $container, $page, array $captchaConfig)
 {
     $container->setParameter('captcha.config.' . $page, $captchaConfig);
     $container->setParameter('captcha.config.' . $page . '.captcha_id', $captchaConfig['captcha_id']);
     $container->setParameter('captcha.config.' . $page . '.user_input_id', $captchaConfig['user_input_id']);
     $container->setParameter('captcha.config.' . $page . '.captcha_config_file_path', $captchaConfig['captcha_config_file_path']);
 }
Esempio n. 16
0
 /**
  * Configuration extension loader
  *
  * @param array            $configs   An array of configuration settings
  * @param ContainerBuilder $container A container builder instance
  */
 public function load(array $configs, ContainerBuilder $container)
 {
     $config = $this->processConfiguration(new Configuration(), $configs);
     $loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
     $loader->load('services.xml');
     $container->setParameter('eko_feed.config', $config);
 }
 /**
  * @inheritDoc
  */
 public function process(ContainerBuilder $container)
 {
     $executorId = 'thruster_doctrine_actions.doctrine_persist_action.executor';
     $executorDefinition = new Definition('Thruster\\Bundle\\DoctrineActionsBundle\\DoctrinePersistActionExecutor', [new Reference('doctrine')]);
     $executorDefinition->addTag('thruster_action_executor', []);
     $container->setDefinition($executorId, $executorDefinition);
 }
Esempio n. 18
0
 /** {@inheritdoc} */
 public function build(ContainerBuilder $container)
 {
     if ($container instanceof ExtendedContainerBuilder) {
         $container->addCompilerPass(new ListenerExcludeSearchConnectionPass());
         $container->moveCompilerPassBefore('Oro\\Bundle\\SearchBundle\\DependencyInjection\\Compiler\\ListenerExcludeSearchConnectionPass', 'Oro\\Bundle\\PlatformBundle\\DependencyInjection\\Compiler\\UpdateDoctrineEventHandlersPass');
     }
 }
 public function testProcess()
 {
     $container = new ContainerBuilder();
     $container->register('a')->addArgument(new Reference('b'));
     $container->register('b');
     $this->process($container);
 }
Esempio n. 20
0
 public function process(ContainerBuilder $container)
 {
     // only replace the default router by overwriting the 'router' alias if config tells us to
     if ($container->hasParameter('cmf_routing.replace_symfony_router') && true === $container->getParameter('cmf_routing.replace_symfony_router')) {
         $container->setAlias('router', 'cmf_routing.router');
     }
 }
Esempio n. 21
0
 /**
  * {@inheritdoc}
  */
 public function build(ContainerBuilder $container)
 {
     $interfaces = $this->getModelInterfaces();
     if (!empty($interfaces)) {
         $container->addCompilerPass(new ResolveDoctrineTargetEntitiesPass($this->getBundlePrefix(), $interfaces));
     }
     if (null !== $this->getModelNamespace()) {
         $className = get_class($this);
         foreach ($className::getSupportedDrivers() as $driver) {
             list($compilerPassClassName, $compilerPassMethod) = $this->getMappingCompilerPassInfo($driver);
             if (class_exists($compilerPassClassName)) {
                 if (!method_exists($compilerPassClassName, $compilerPassMethod)) {
                     throw new InvalidConfigurationException("The 'mappingFormat' value is invalid, must be 'xml', 'yml' or 'annotation'.");
                 }
                 switch ($this->mappingFormat) {
                     case ResourceBundleInterface::MAPPING_XML:
                     case ResourceBundleInterface::MAPPING_YAML:
                         $container->addCompilerPass($compilerPassClassName::$compilerPassMethod(array($this->getConfigFilesPath() => $this->getModelNamespace()), array(sprintf('%s.object_manager', $this->getBundlePrefix())), sprintf('%s.driver.%s', $this->getBundlePrefix(), $driver)));
                         break;
                     case ResourceBundleInterface::MAPPING_ANNOTATION:
                         $container->addCompilerPass($compilerPassClassName::$compilerPassMethod(array($this->getModelNamespace()), array($this->getConfigFilesPath()), array(sprintf('%s.object_manager', $this->getBundlePrefix())), sprintf('%s.driver.%s', $this->getBundlePrefix(), $driver)));
                         break;
                 }
             }
         }
     }
 }
Esempio n. 22
0
 public static function getContainerBuilders()
 {
     $builder1 = new ContainerBuilder();
     $builder1->setDefinitions(self::getContainerDefinitions());
     $builder1->setAliases(self::getContainerAliases());
     return array('builder_1' => $builder1);
 }
Esempio n. 23
0
 /**
  * Processes a ContainerBuilder object to populate the service reference graph.
  *
  * @param ContainerBuilder $container
  */
 public function process(ContainerBuilder $container)
 {
     $this->container = $container;
     $this->graph = $container->getCompiler()->getServiceReferenceGraph();
     $this->graph->clear();
     foreach ($container->getDefinitions() as $id => $definition) {
         if ($definition->isSynthetic() || $definition->isAbstract()) {
             continue;
         }
         $this->currentId = $id;
         $this->currentDefinition = $definition;
         $this->processArguments($definition->getArguments());
         if ($definition->getFactoryService()) {
             $this->processArguments(array(new Reference($definition->getFactoryService())));
         }
         if (!$this->onlyConstructorArguments) {
             $this->processArguments($definition->getMethodCalls());
             $this->processArguments($definition->getProperties());
             if ($definition->getConfigurator()) {
                 $this->processArguments(array($definition->getConfigurator()));
             }
         }
     }
     foreach ($container->getAliases() as $id => $alias) {
         $this->graph->connect($id, $alias, (string) $alias, $this->getDefinition((string) $alias), null);
     }
 }
 /**
  * Creates and registers compiler passes for PHPCR-ODM mapping if both the
  * phpcr-odm and the phpcr-bundle are present.
  *
  * @param ContainerBuilder $container
  */
 private function buildPhpcrCompilerPass(ContainerBuilder $container)
 {
     if (!class_exists('Doctrine\\Bundle\\PHPCRBundle\\DependencyInjection\\Compiler\\DoctrinePhpcrMappingsPass') || !class_exists('Doctrine\\ODM\\PHPCR\\Version')) {
         return;
     }
     $container->addCompilerPass(DoctrinePhpcrMappingsPass::createXmlMappingDriver(array(realpath(__DIR__ . '/Resources/config/doctrine-model') => 'Symfony\\Cmf\\Bundle\\RoutingAutoBundle\\Model'), array('cmf_routing_auto.persistence.phpcr.manager_name'), false, array('CmfRoutingAutoBundle' => 'Symfony\\Cmf\\Bundle\\RoutingAutoBundle\\Model')));
 }
 /**
  * {@inheritdoc}
  */
 public function process(ContainerBuilder $container)
 {
     $container->getDefinition('sensio_framework_extra.routing.loader.annot_class')->addMethodCall('setSiteContext', array(new Reference('site_context')));
     $container->getDefinition('router.default')->setClass('Alex\\MultisiteBundle\\Router\\MultisiteRouter');
     $container->getDefinition('router.default')->addMethodCall('setSiteContext', array(new Reference('site_context')));
     $container->getDefinition('router.default')->addMethodCall('setSortRoutes', array("%alex_multisite.sort_routes%"));
 }
 public function process(ContainerBuilder $container)
 {
     $translationFile = __DIR__ . '/../../Resources/translations/bar.en.yml';
     $translator = $container->findDefinition('translator.default');
     list($domain, $locale, $format) = explode('.', $translationFile, 3);
     $translator->addMethodCall('addResource', array($format, $translationFile, $locale, $domain));
 }
 /**
  * Test related method
  */
 public function testLoad()
 {
     $this->extension->load($this->configs, $this->containerBuilder);
     $serviceIds = $this->containerBuilder->getServiceIds();
     $this->assertCount(3, $serviceIds);
     $this->assertTrue(in_array(self::PIM_TRANSLATION_FORM_TYPE, $serviceIds));
 }
 /**
  * @param \Symfony\Component\DependencyInjection\ContainerBuilder $container
  * @param string                                                  $name
  *
  * @return string
  */
 private function getModelName(ContainerBuilder $container, $name)
 {
     if ($name[0] == '%') {
         return $container->getParameter(substr($name, 1, -1));
     }
     return $name;
 }
 /**
  * You can modify the container here before it is dumped to PHP code.
  *
  * @param ContainerBuilder $container
  *
  * @api
  */
 public function process(ContainerBuilder $container)
 {
     $config = $container->getParameter(ElastificationPhpClientExtension::PARAMETER_CONFIG_KEY);
     if (true === $config['profiler_enabled']) {
         $clientAlias = $container->getAlias(ElastificationPhpClientExtension::ALIAS_CLIENT);
         $profilerDef = $container->getDefinition(ElastificationPhpClientExtension::SERVICE_CLIENT_PROFILER_KEY);
         $profilerDef->replaceArgument(0, new Reference($clientAlias->__toString()));
         $dataCollectorDef = $container->getDefinition('elastification_php_client.datacollector');
         $dataCollectorDef->addMethodCall('setConfig', array($config));
         $container->setAlias(ElastificationPhpClientExtension::ALIAS_CLIENT, ElastificationPhpClientExtension::SERVICE_CLIENT_PROFILER_KEY);
     } else {
         if ($container->hasDefinition('profiler')) {
             $sfProfilerDef = $container->getDefinition('profiler');
             $sfProfilerMethodCalls = $sfProfilerDef->getMethodCalls();
             foreach ($sfProfilerMethodCalls as $sfProfilerMethodCallsIndex => $sfProfilerMethodCall) {
                 if (isset($sfProfilerMethodCall[1][0]) && 'elastification_php_client.datacollector' == (string) $sfProfilerMethodCall[1][0]) {
                     unset($sfProfilerMethodCalls[$sfProfilerMethodCallsIndex]);
                 }
             }
             $sfProfilerDef->setMethodCalls($sfProfilerMethodCalls);
         }
         $container->removeDefinition(ElastificationPhpClientExtension::SERVICE_CLIENT_PROFILER_KEY);
         $container->removeDefinition('elastification_php_client.datacollector');
     }
 }
 /**
  * Processes the ContainerBuilder to validate References.
  *
  * @param ContainerBuilder $container
  */
 public function process(ContainerBuilder $container)
 {
     $this->container = $container;
     $children = $this->container->getScopeChildren();
     $ancestors = array();
     $scopes = $this->container->getScopes();
     foreach ($scopes as $name => $parent) {
         $ancestors[$name] = array($parent);
         while (isset($scopes[$parent])) {
             $ancestors[$name][] = $parent = $scopes[$parent];
         }
     }
     foreach ($container->getDefinitions() as $id => $definition) {
         if ($definition->isSynthetic() || $definition->isAbstract()) {
             continue;
         }
         $this->currentId = $id;
         $this->currentDefinition = $definition;
         $this->currentScope = $scope = $definition->getScope();
         if (ContainerInterface::SCOPE_CONTAINER === $scope) {
             $this->currentScopeChildren = array_keys($scopes);
             $this->currentScopeAncestors = array();
         } elseif (ContainerInterface::SCOPE_PROTOTYPE !== $scope) {
             $this->currentScopeChildren = isset($children[$scope]) ? $children[$scope] : array();
             $this->currentScopeAncestors = isset($ancestors[$scope]) ? $ancestors[$scope] : array();
         }
         $this->validateReferences($definition->getArguments());
         $this->validateReferences($definition->getMethodCalls());
         $this->validateReferences($definition->getProperties());
     }
 }