/** * {@inheritdoc} */ public function process(ContainerBuilder $container) { if ($container->hasDefinition('doctrine')) { $definition = new DefinitionDecorator('dag.form.type.object_to_identifier'); $definition->addArgument(new Reference('doctrine')); $definition->addArgument('dag_entity_to_identifier'); $definition->addTag('form.type', array('alias' => 'dag_entity_to_identifier')); $container->setDefinition('dag_entity_to_identifier', $definition); } if ($container->hasDefinition('doctrine_mongodb')) { $definition = new DefinitionDecorator('dag.form.type.object_to_identifier'); $definition->addArgument(new Reference('doctrine_mongodb')); $definition->addArgument('dag_document_to_identifier'); $definition->addTag('form.type', array('alias' => 'dag_document_to_identifier')); $container->setDefinition('dag_document_to_identifier', $definition); if (!$container->hasDefinition('dag_entity_to_identifier')) { $container->setAlias('dag_entity_to_identifier', 'dag_document_to_identifier'); } } if ($container->hasDefinition('doctrine_phpcr')) { $definition = new DefinitionDecorator('dag.form.type.object_to_identifier'); $definition->addArgument(new Reference('doctrine_phpcr')); $definition->addArgument('dag_phpcr_document_to_identifier'); $definition->addTag('form.type', array('alias' => 'dag_phpcr_document_to_identifier')); $container->setDefinition('dag_phpcr_document_to_identifier', $definition); if (!$container->hasDefinition('dag_entity_to_identifier')) { $container->setAlias('dag_entity_to_identifier', 'dag_phpcr_document_to_identifier'); } } }
public function testConstructorWithInheritance() { $container = $this->getContainer(array(), array(__DIR__ . '/../../Functional/Bundle/TestBundle/Inheritance')); $container->set('foo', $foo = new \stdClass()); $container->set('bar', $bar = new \stdClass()); $this->process($container); $this->assertTrue($container->hasDefinition('concrete_class')); $this->assertTrue($container->hasDefinition('abstract_class')); $def = new DefinitionDecorator('abstract_class'); $def->setClass('JMS\\DiExtraBundle\\Tests\\Functional\\Bundle\\TestBundle\\Inheritance\\ConcreteClass'); $def->addArgument(new Reference('foo')); $def->addArgument(new Reference('bar')); $this->assertEquals($def, $container->getDefinition('concrete_class')); }
/** * @inheritdoc */ public function process(ContainerBuilder $container) { if (!$container->hasDefinition('qimnet.crud.configuration.repository')) { return; } $repository = $container->getDefinition('qimnet.crud.configuration.repository'); $defaults = $container->getParameter('qimnet.crud.defaults'); foreach ($container->getParameter('qimnet.crud.services') as $name => $configuration) { $options = $configuration['options'] + array('name' => $name) + $defaults['options']; $configuration = $configuration + $defaults; $serviceId = 'qimnet.crud.configuration.' . strtolower($name); $definition = new DefinitionDecorator('qimnet.crud.configuration'); foreach (array('object_manager_factory', 'security_context_factory', 'path_generator_factory') as $index => $key) { if ($configuration[$key]) { $definition->replaceArgument($index, new Reference($configuration[$key])); } } $definition->addArgument($options); if ($configuration['class']) { $definition->setClass($configuration['class']); } $definition->addTag('qimnet.crud.configuration', array('alias' => $name, 'object_class' => $options['object_class'], 'worker' => $configuration['worker'], 'redirection_manager' => $configuration['redirection_manager'])); $container->setDefinition($serviceId, $definition); } $taggedServices = $container->findTaggedServiceIds('qimnet.crud.configuration'); foreach ($taggedServices as $id => $attributes) { $repository->addMethodCall('add', array($attributes[0]['alias'], $attributes[0]['object_class'], $id, $attributes[0]['worker'], $attributes[0]['redirection_manager'])); } }
/** * {@inheritdoc} */ public function load(array $configs, ContainerBuilder $container) { $configuration = new Configuration(); $config = $this->processConfiguration($configuration, $configs); $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); $loader->load('services.yml'); foreach ($config['connections'] as $name => $values) { $def = new Definition(); $def->setClass($container->getParameter('agentsib_sphinx.connection.class')); $params = array('host' => $values['host'], 'port' => $values['port']); if ($values['socket']) { $params['socket'] = $values['socket']; } $def->setArguments(array($name, $values['driver'], $params)); $def->addMethodCall('addLogger', array(new Reference('agentsib_sphinx.logger'))); $container->setDefinition(sprintf('agentsib_sphinx.%s.connection', $name), $def); $helperDef = new DefinitionDecorator('agentsib_sphinx.factory.helper'); $helperDef->setFactoryClass($container->getParameter('agentsib_sphinx.helper.class')); $helperDef->setFactoryMethod('create'); $helperDef->addArgument(new Reference(sprintf('agentsib_sphinx.%s.connection', $name))); $helperDef->setPublic(true); $container->setDefinition(sprintf('agentsib_sphinx.%s.helper', $name), $helperDef); if ($name == $config['default_connection']) { $container->setAlias('agentsib_sphinx.connection', sprintf('agentsib_sphinx.%s.connection', $name)); $container->setAlias('agentsib_sphinx.helper', sprintf('agentsib_sphinx.%s.helper', $name)); } } }
/** * Loads the workflow configuration. * * @param array $workflows A workflow configuration array * @param ContainerBuilder $container A ContainerBuilder instance * @param XmlFileLoader $loader An XmlFileLoader instance */ private function registerWorkflowConfiguration(array $workflows, ContainerBuilder $container, XmlFileLoader $loader) { if (!$workflows) { return; } $loader->load('workflow.xml'); $registryDefinition = $container->getDefinition('workflow.registry'); foreach ($workflows as $name => $workflow) { $type = $workflow['type']; $transitions = array(); foreach ($workflow['transitions'] as $transitionName => $transition) { if ($type === 'workflow') { $transitions[] = new Definition(Workflow\Transition::class, array($transitionName, $transition['from'], $transition['to'])); } elseif ($type === 'state_machine') { foreach ($transition['from'] as $from) { foreach ($transition['to'] as $to) { $transitions[] = new Definition(Workflow\Transition::class, array($transitionName, $from, $to)); } } } } // Create a Definition $definitionDefinition = new Definition(Workflow\Definition::class); $definitionDefinition->setPublic(false); $definitionDefinition->addArgument($workflow['places']); $definitionDefinition->addArgument($transitions); $definitionDefinition->addTag('workflow.definition', array('name' => $name, 'type' => $type, 'marking_store' => isset($workflow['marking_store']['type']) ? $workflow['marking_store']['type'] : null)); if (isset($workflow['initial_place'])) { $definitionDefinition->addArgument($workflow['initial_place']); } // Create MarkingStore if (isset($workflow['marking_store']['type'])) { $parentDefinitionId = 'workflow.marking_store.' . $workflow['marking_store']['type']; $markingStoreDefinition = new DefinitionDecorator($parentDefinitionId); foreach ($workflow['marking_store']['arguments'] as $argument) { $markingStoreDefinition->addArgument($argument); } // explicitly set parent class to decorated definition in order to fix inconsistent behavior for <=2.7 // see https://github.com/symfony/symfony/issues/17353 and https://github.com/symfony/symfony/pull/15096 $markingStoreDefinition->setClass($container->getDefinition($parentDefinitionId)->getClass()); } elseif (isset($workflow['marking_store']['service'])) { $markingStoreDefinition = new Reference($workflow['marking_store']['service']); } // Create Workflow $workflowDefinition = new DefinitionDecorator(sprintf('%s.abstract', $type)); $workflowDefinition->replaceArgument(0, $definitionDefinition); if (isset($markingStoreDefinition)) { $workflowDefinition->replaceArgument(1, $markingStoreDefinition); } $workflowDefinition->replaceArgument(3, $name); // Store to container $workflowId = sprintf('%s.%s', $type, $name); $container->setDefinition($workflowId, $workflowDefinition); $container->setDefinition(sprintf('%s.definition', $workflowId), $definitionDefinition); // Add workflow to Registry foreach ($workflow['supports'] as $supportedClass) { $registryDefinition->addMethodCall('add', array(new Reference($workflowId), $supportedClass)); } } }
private function createAssetVersionStrategy($packageName, $versionStrategy) { $version = new DefinitionDecorator($this->namespaceService('asset.version_strategy')); $version->addArgument($versionStrategy); $versionId = $this->namespaceService("_package.{$packageName}.version_strategy_asset"); $this->container->setDefinition($versionId, $version); return new Reference($versionId); }
private function createClient($id, $config, ContainerBuilder $container) { $config['listen'] = 'localhost:' . $config['mysql_port'] . ':mysql41'; $def = new DefinitionDecorator('acts.sphinx_realtime.client.abstract'); $def->addArgument($id)->addArgument($config); $container->setDefinition('acts.sphinx_realtime.client.' . $id, $def); return new Reference('acts.sphinx_realtime.client.' . $id); }
private function loadSelect2Types(ContainerBuilder $container) { $serviceId = 'admingenerator.form.extensions.type.select2'; $select2types = array('choice', 'language', 'country', 'timezone', 'locale', 'entity', 'document', 'model', 'hidden'); foreach ($select2types as $type) { $typeDef = new DefinitionDecorator($serviceId); $typeDef->addArgument($type)->addTag('form.type', array('alias' => 's2a_select2_' . $type)); $container->setDefinition($serviceId . '.' . $type, $typeDef); } }
/** {@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('error-handler-services.xml'); $container->setParameter('error_handler.stage', $config['stage']); $container->setParameter('error_handler.root_dir', $config['root_dir']); $shutdownSeverity = strtoupper($config['shutdown_severity']); $container->setParameter('error_handler.shutdown_severity', $shutdownSeverity); $baseErrorHandler = $container->getDefinition('base_error_handler'); $baseErrorHandler->replaceArgument(0, Severity::$SEVERITIES[$shutdownSeverity]); $errorHandler = $container->getDefinition('error_handler'); foreach ($config['categories'] as $categoryName => $categoryConfiguration) { if (empty($categoryConfiguration['handlers'])) { continue; } foreach ($categoryConfiguration['handlers'] as $handlerName => $handlerConfiguration) { $handlerClass = $container->getParameter(sprintf('error_handler.handler_%s.class', $handlerName)); $handlerId = sprintf('error_handler.handler.%s.%s', $categoryName, $handlerName); $handlerDefinition = new DefinitionDecorator('error_handler.abstract.handler'); $handlerDefinition->setClass($handlerClass); $handlerDefinition->setPublic(false); $handlerDefinition->setLazy(true); switch ($handlerName) { case 'bugsnag': $handlerDefinition->addArgument($handlerConfiguration['apiKey']); if (isset($handlerConfiguration['endpoint'])) { $handlerDefinition->addMethodCall('setEndpoint', array($handlerConfiguration['endpoint'])); } if (isset($handlerConfiguration['useSSL'])) { $handlerDefinition->addMethodCall('setUseSSL', array($handlerConfiguration['useSSL'])); } break; case 'raven': $handlerDefinition->addArgument($handlerConfiguration['endpoint']); break; } $container->setDefinition($handlerId, $handlerDefinition); $errorHandler->addMethodCall('addHandler', array(new Reference($handlerId), array($categoryName))); } } }
public function registerContainerConfiguration(LoaderInterface $loader) { parent::registerContainerConfiguration($loader); $loader->load(function (ContainerBuilder $container) { $container->setParameter('database_user', 'test'); $container->setParameter('database_password', 'test'); $container->setParameter('database_host', 'test'); $container->setParameter('broadway.saga.mongodb.storage_suffix', 'test'); $lockingRepositoryDefinition = new DefinitionDecorator('simgroep_event_sourcing.locking_repository'); $lockingRepositoryDefinition->setClass('Simgroep\\EventSourcing\\Repository\\TestAssets\\Aggregate'); $lockingRepositoryDefinition->addArgument('Simgroep\\EventSourcing\\Repository\\TestAssets\\Aggregate'); $container->setDefinition('locking_repository', $lockingRepositoryDefinition); }); }
public function testNamespaceArgumentIsReplaced() { $container = new ContainerBuilder(); $adapter = new Definition(); $adapter->setAbstract(true); $adapter->addTag('cache.pool'); $container->setDefinition('app.cache_adapter', $adapter); $container->setAlias('app.cache_adapter_alias', 'app.cache_adapter'); $cachePool = new DefinitionDecorator('app.cache_adapter_alias'); $cachePool->addArgument(null); $cachePool->addTag('cache.pool'); $container->setDefinition('app.cache_pool', $cachePool); $this->cachePoolPass->process($container); $this->assertSame('kRFqMp5odS', $cachePool->getArgument(0)); }
/** * {@inheritdoc} */ public function process(ContainerBuilder $container) { if ($container->hasDefinition('doctrine')) { $definition = new DefinitionDecorator('sylius.form.type.object_to_identifier'); $definition->addArgument(new Reference('doctrine')); $definition->addArgument('sylius_entity_to_identifier'); $definition->addTag('form.type', ['alias' => 'sylius_entity_to_identifier']); $container->setDefinition('sylius_entity_to_identifier', $definition); $definition = $container->findDefinition('sylius.form.type.entity_hidden'); $definition->replaceArgument(0, new Reference('doctrine')); } if ($container->hasDefinition('doctrine_mongodb')) { $definition = new DefinitionDecorator('sylius.form.type.object_to_identifier'); $definition->addArgument(new Reference('doctrine_mongodb')); $definition->addArgument('sylius_document_to_identifier'); $definition->addTag('form.type', ['alias' => 'sylius_document_to_identifier']); $container->setDefinition('sylius_document_to_identifier', $definition); if (!$container->hasDefinition('sylius_entity_to_identifier')) { $container->setAlias('sylius_entity_to_identifier', 'sylius_document_to_identifier'); } if (!$container->hasDefinition('doctrine')) { $definition = $container->findDefinition('sylius.form.type.entity_hidden'); $definition->replaceArgument(0, new Reference('doctrine_mongodb')); } } if ($container->hasDefinition('doctrine_phpcr')) { $definition = new DefinitionDecorator('sylius.form.type.object_to_identifier'); $definition->addArgument(new Reference('doctrine_phpcr')); $definition->addArgument('sylius_phpcr_document_to_identifier'); $definition->addTag('form.type', ['alias' => 'sylius_phpcr_document_to_identifier']); $container->setDefinition('sylius_phpcr_document_to_identifier', $definition); if (!$container->hasDefinition('sylius_entity_to_identifier')) { $container->setAlias('sylius_entity_to_identifier', 'sylius_phpcr_document_to_identifier'); } } }
protected function createManifestVersionStrategy($packageName, $config) { $loader = new DefinitionDecorator($this->namespaceService('manifest.loader.' . $config['format'])); $loader->addArgument($config['path'])->addArgument($config['root_key']); $loaderId = $this->namespaceService("_package.{$packageName}.manifest_loader"); $this->container->setDefinition($loaderId, $loader); $cachedLoader = new DefinitionDecorator($this->namespaceService('manifest.loader.cached')); $cachedLoader->addArgument(new Reference($loaderId)); $cachedLoaderId = $this->namespaceService("_package.{$packageName}.manifest_loader_cached"); $this->container->setDefinition($cachedLoaderId, $cachedLoader); $versionStrategy = new DefinitionDecorator($this->namespaceService('version_strategy.manifest')); $versionStrategy->addArgument(new Reference($cachedLoaderId)); $versionStrategyId = $this->namespaceService("_package.{$packageName}.version_strategy"); $this->container->setDefinition($versionStrategyId, $versionStrategy); return new Reference($versionStrategyId); }
/** * @inheritdoc */ public function process(ContainerBuilder $container) { if (!$container->hasDefinition('tree_house.queue.event_listener.flush')) { return; } $listener = $container->getDefinition('tree_house.queue.event_listener.flush'); foreach (['doctrine', 'doctrine_mongodb'] as $id) { if ($container->hasDefinition($id)) { $flusherId = sprintf('tree_house.queue.flusher.%s', $id); $definition = new DefinitionDecorator('tree_house.queue.flusher.doctrine_abstract'); $definition->addArgument(new Reference($id)); $container->setDefinition($flusherId, $definition); $listener->addMethodCall('addFlusher', [new Reference($flusherId)]); } } foreach ($container->findTaggedServiceIds('tree_house.queue.flusher') as $id => list($tag)) { $listener->addMethodCall('addFlusher', [new Reference($id)]); } }
private function createAuthorization($config, ContainerBuilder $container) { if (!$config['access_control']) { return; } $this->addClassesToCompile(array('Symfony\\Component\\Security\\Http\\AccessMap')); foreach ($config['access_control'] as $access) { $matcher = $this->invokeParent('createRequestMatcher', array($container, $access['path'], $access['host'], count($access['methods']) === 0 ? null : $access['methods'], $access['ips'])); if (isset($access['roles'])) { $attributes = $access['roles']; } else { $def = new DefinitionDecorator('security.expressions.expression'); $def->addArgument($access['access']); $container->setDefinition($exprId = 'security.expressions.expression.' . sha1($access['access']), $def); $attributes = array(new Reference($exprId)); } $container->getDefinition('security.access_map')->addMethodCall('add', array($matcher, $attributes, $access['requires_channel'])); } }
public function testNamespaceArgumentIsReplaced() { $container = new ContainerBuilder(); $container->setParameter('kernel.debug', false); $container->setParameter('kernel.name', 'app'); $container->setParameter('kernel.environment', 'prod'); $container->setParameter('kernel.root_dir', 'foo'); $adapter = new Definition(); $adapter->setAbstract(true); $adapter->addTag('cache.pool'); $container->setDefinition('app.cache_adapter', $adapter); $container->setAlias('app.cache_adapter_alias', 'app.cache_adapter'); $cachePool = new DefinitionDecorator('app.cache_adapter_alias'); $cachePool->addArgument(null); $cachePool->addTag('cache.pool'); $container->setDefinition('app.cache_pool', $cachePool); $this->cachePoolPass->process($container); $this->assertSame('C42Pcl9VBJ', $cachePool->getArgument(0)); }
public function process(ContainerBuilder $container) { if (!$container->hasDefinition('jms_translation.file_writer')) { return; } $dumpers = array(); $i = 0; foreach ($container->findTaggedServiceIds('translation.dumper') as $id => $attr) { if (!isset($attr[0]['alias'])) { throw new RuntimeException(sprintf('The "alias" attribute must be set for tag "translation.dumper" for service "%s".', $id)); } $def = new DefinitionDecorator('jms_translation.dumper.symfony_adapter'); $def->addArgument(new Reference($id))->addArgument($attr[0]['alias']); $container->setDefinition($id = 'jms_translation.dumper.wrapped_symfony_dumper.' . $i++, $def); $dumpers[$attr[0]['alias']] = new Reference($id); } foreach ($container->findTaggedServiceIds('jms_translation.dumper') as $id => $attr) { if (!isset($attr[0]['format'])) { throw new RuntimeException(sprintf('The "format" attribute must be set for tag "jms_translation.dumper" for service "%s".', $id)); } $dumpers[$attr[0]['format']] = new Reference($id); } $container->getDefinition('jms_translation.file_writer')->addArgument($dumpers); }
/** * Loads the workflow configuration. * * @param array $workflows A workflow configuration array * @param ContainerBuilder $container A ContainerBuilder instance * @param XmlFileLoader $loader An XmlFileLoader instance */ private function registerWorkflowConfiguration(array $workflows, ContainerBuilder $container, XmlFileLoader $loader) { if (!$workflows) { return; } $loader->load('workflow.xml'); $registryDefinition = $container->getDefinition('workflow.registry'); foreach ($workflows as $name => $workflow) { $definitionDefinition = new Definition(Workflow\Definition::class); $definitionDefinition->addMethodCall('addPlaces', array($workflow['places'])); foreach ($workflow['transitions'] as $transitionName => $transition) { $definitionDefinition->addMethodCall('addTransition', array(new Definition(Workflow\Transition::class, array($transitionName, $transition['from'], $transition['to'])))); } if (isset($workflow['marking_store']['type'])) { $markingStoreDefinition = new DefinitionDecorator('workflow.marking_store.' . $workflow['marking_store']['type']); foreach ($workflow['marking_store']['arguments'] as $argument) { $markingStoreDefinition->addArgument($argument); } } else { $markingStoreDefinition = new Reference($workflow['marking_store']['service']); } $workflowDefinition = new DefinitionDecorator('workflow.abstract'); $workflowDefinition->replaceArgument(0, $definitionDefinition); $workflowDefinition->replaceArgument(1, $markingStoreDefinition); $workflowDefinition->replaceArgument(3, $name); $workflowId = 'workflow.' . $name; $container->setDefinition($workflowId, $workflowDefinition); foreach ($workflow['supports'] as $supportedClass) { $registryDefinition->addMethodCall('add', array(new Reference($workflowId), $supportedClass)); } } }
/** * @param \Symfony\Component\DependencyInjection\ContainerBuilder $container * @param string $dealId * @param array $condition * @param string $conditionId * @return string */ protected function addConditionConfiguration(ContainerBuilder $container, $dealId, $condition, $conditionId) { $conditionConfigurationDefinition = new DefinitionDecorator('deals.condition.configuration'); $conditionConfigurationDefinition->addArgument($condition['configuration']); $conditionConfigurationID = "deals.deal.{$dealId}.condition_{$conditionId}.configuration"; $container->setDefinition($conditionConfigurationID, $conditionConfigurationDefinition); return $conditionConfigurationID; }
/** * Loads extended form types. * * @param string $serviceId Id of the abstract service * @param string $name Name of the type * @param ContainerBuilder $container A ContainerBuilder instance */ private function loadExtendedTypes($serviceId, $name, ContainerBuilder $container) { foreach (array('choice', 'language', 'country', 'timezone', 'locale', 'entity', 'document', 'model') as $type) { $typeDef = new DefinitionDecorator($serviceId); $typeDef->addArgument($type)->addTag('form.type', array('alias' => 'genemu_' . $name . '_' . $type)); $container->setDefinition($serviceId . '.' . $type, $typeDef); } }
/** * @param string $processName * @param string $definitionName * @return Definition */ protected function getCoordinatorDefinition($processName, $definitionName) { $coordinator = new DefinitionDecorator('pmd_state_machine.process.coordinator'); $coordinator->addArgument(new Reference($processName))->addTag('pmd_state_machine.coordinator', array('alias' => $definitionName)); return $coordinator; }
/** * Loads a specific configuration. Additionally calls processConfig, which handles overriding * the subsytem level configuration with more relevant mysite/config level configuration * * @param array $configs An array of configuration values * @param \Symfony\Component\DependencyInjection\ContainerBuilder $container A ContainerBuilder instance * * @throws \InvalidArgumentException When provided tag is not defined in this extension * @return void */ public function load(array $configs, ContainerBuilder $container) { (new YamlFileLoader($container, new FileLocator(ECOMMERCE_CORE_BASE_PATH . '/config/')))->load('services.yml'); $config = (new Processor())->processConfiguration(new ContainerConfig(), $configs); if (isset($config['yml_transaction']) && $container->hasDefinition('transaction_schema')) { $definition = $container->getDefinition('transaction_schema'); $definition->replaceArgument(0, $config['yml_transaction']); } // Configure currencies from DB if (isset($config['currency_db'])) { $handler = function (CurrencyDataProvider $record) use($container) { $code = $record->getCurrencyCode(); $definition = new Definition('Heystack\\Ecommerce\\Currency\\Currency', [$record->getCurrencyCode(), $record->getValue(), (bool) ($default = $record->isDefaultCurrency())]); $definition->addTag(Services::CURRENCY_SERVICE . '.currency'); $container->setDefinition("currency.{$code}", $definition); if ($default) { $definition->addTag(Services::CURRENCY_SERVICE . '.currency_default'); } }; (new DBClosureLoader($handler))->load([$config['currency_db']['select'], $config['currency_db']['from'], $config['currency_db']['where']]); } elseif (isset($config['currency'])) { foreach ($config['currency'] as $currency) { $container->setDefinition("currency.{$currency['code']}", $definition = new Definition('Heystack\\Ecommerce\\Currency\\Currency', [$currency['code'], $currency['value'], (bool) $currency['default']])); $definition->addTag(Services::CURRENCY_SERVICE . '.currency'); if ($currency['default']) { $definition->addTag(Services::CURRENCY_SERVICE . '.currency_default'); } } } // Configure locale from DB if (isset($config['locale_db'])) { $handler = function (CountryDataProviderInterface $record) use($container) { $localeDefinition = new DefinitionDecorator(Services::LOCALE_SERVICE . '.country'); $localeDefinition->addArgument($identifier = $record->getCountryCode()); $localeDefinition->addArgument($record->getName()); $localeDefinition->addArgument((bool) ($default = $record->isDefault())); $localeDefinition->addTag(Services::LOCALE_SERVICE . '.locale'); $container->setDefinition("locale.{$identifier}", $localeDefinition); if ($default) { $localeDefinition->addTag(Services::LOCALE_SERVICE . '.locale_default'); } }; (new DBClosureLoader($handler))->load([$config['locale_db']['select'], $config['locale_db']['from'], $config['locale_db']['where']]); } elseif (isset($config['locale'])) { foreach ($config['locale'] as $locale) { $localeDefinition = new DefinitionDecorator(Services::LOCALE_SERVICE . '.country'); $localeDefinition->addArgument($locale['code']); $localeDefinition->addArgument($locale['name']); $localeDefinition->addArgument((bool) $locale['default']); $localeDefinition->addTag(Services::LOCALE_SERVICE . '.locale'); $container->setDefinition("locale.{$locale['code']}", $localeDefinition); if ($locale['default']) { $localeDefinition->addTag(Services::LOCALE_SERVICE . '.locale_default'); } } } if (isset($config['zone_db'])) { $handler = function (ZoneDataProviderInterface $record, $index) use($container, $config) { $zoneDefinition = new DefinitionDecorator(Services::ZONE_SERVICE . '.zone'); $zoneDefinition->addArgument($record->getName()); $zoneDefinition->addArgument($record->getCountryCodes()); $zoneDefinition->addArgument($record->getCurrency()); $zoneDefinition->addTag(Services::ZONE_SERVICE . '.zone'); $container->setDefinition(sprintf("zone.%s.%s", $config['zone_db']['from'], $index), $zoneDefinition); }; (new DBClosureLoader($handler))->load([$config['zone_db']['select'], $config['zone_db']['from'], $config['zone_db']['where']]); } elseif (isset($config['zone'])) { foreach ($config['zone'] as $index => $locale) { $zoneDefinition = new DefinitionDecorator(Services::ZONE_SERVICE . '.zone'); $zoneDefinition->addArgument($locale['name']); $zoneDefinition->addArgument($locale['countries']); $zoneDefinition->addArgument($locale['currency']); $zoneDefinition->addTag(Services::ZONE_SERVICE . '.zone'); $container->setDefinition(sprintf("zone.%s", $index), $zoneDefinition); } } }
/** * Loads extended form types. * * @param string $serviceId Id of the abstract service * @param string $name Name of the type * @param ContainerBuilder $container A ContainerBuilder instance */ private function loadExtendedTypes($serviceId, $name, ContainerBuilder $container) { foreach ($this->getChoiceTypeNames() as $type) { $typeDef = new DefinitionDecorator($serviceId); $typeDef->addArgument($type)->addTag('form.type', array('alias' => 'genemu_' . $name . '_' . $type)); $container->setDefinition($serviceId . '.' . $type, $typeDef); } }
/** * @param ContainerBuilder $container * @param array $config * @param string $name * * @return string */ private function createConsumerDefinition($name, array $config, ContainerBuilder $container) { // create the queue $queue = $config['queue']; if (!isset($queue['name'])) { $queue['name'] = $name; } $queueId = $this->createQueueDefinition($name, $queue, $container); // create the processor $processorId = $this->createProcessorDefinition($name, $config, $container); // create the consumer $definition = new DefinitionDecorator('tree_house.queue.consumer.prototype'); $definition->addArgument(new Reference($queueId)); $definition->addArgument(new Reference($processorId)); $definition->addArgument(new Reference('event_dispatcher')); $consumerId = sprintf('tree_house.queue.consumer.%s', $name); $container->setDefinition($consumerId, $definition); $this->consumers[$name] = $consumerId; return $consumerId; }
/** * Configures the basic auth subscriber definition. * * @param \Symfony\Component\DependencyInjection\Definition $subscriber The subscriber. * @param array $basicAuth The basic auth. * @param string $adapterName The adapter name. * @param \Symfony\Component\DependencyInjection\ContainerBuilder $container The container. */ private function configureBasicAuthSubscriberDefinition(Definition $subscriber, array $basicAuth, $adapterName, ContainerBuilder $container) { $model = new DefinitionDecorator(self::createServiceName('subscriber.basic_auth.model')); $model->setArguments(array($basicAuth['username'], $basicAuth['password'])); if (isset($basicAuth['matcher'])) { $model->addArgument($basicAuth['matcher']); } $container->setDefinition($service = self::createServiceName($adapterName . '.basic_auth.model'), $model); $subscriber->setArguments(array(new Reference($service))); }