getDefinition() публичный Метод

Gets a service definition.
public getDefinition ( string $id ) : Definition
$id string The service identifier
Результат Definition A Definition instance
Пример #1
0
 public function process(ContainerBuilder $container)
 {
     if (!$container->hasDefinition('form.extension')) {
         return;
     }
     $definition = $container->getDefinition('form.extension');
     // Builds an array with service IDs as keys and tag aliases as values
     $types = array();
     foreach ($container->findTaggedServiceIds('form.type') as $serviceId => $tag) {
         // The following if-else block is deprecated and will be removed
         // in Symfony 3.0
         // Deprecation errors are triggered in the form registry
         if (isset($tag[0]['alias'])) {
             $types[$tag[0]['alias']] = $serviceId;
         } else {
             $types[$serviceId] = $serviceId;
         }
         // Support type access by FQCN
         $serviceDefinition = $container->getDefinition($serviceId);
         $types[$serviceDefinition->getClass()] = $serviceId;
     }
     $definition->replaceArgument(1, $types);
     $typeExtensions = array();
     foreach ($container->findTaggedServiceIds('form.type_extension') as $serviceId => $tag) {
         $alias = isset($tag[0]['alias']) ? $tag[0]['alias'] : $serviceId;
         $typeExtensions[$alias][] = $serviceId;
     }
     $definition->replaceArgument(2, $typeExtensions);
     // Find all services annotated with "form.type_guesser"
     $guessers = array_keys($container->findTaggedServiceIds('form.type_guesser'));
     $definition->replaceArgument(3, $guessers);
 }
 /**
  * {@inheritdoc}
  */
 public function process(ContainerBuilder $container)
 {
     $universalExtensions = array();
     foreach ($container->findTaggedServiceIds('sonata.admin.extension') as $id => $tags) {
         foreach ($tags as $attributes) {
             $target = false;
             if (isset($attributes['target'])) {
                 $target = $attributes['target'];
             }
             if (isset($attributes['global']) && $attributes['global']) {
                 $universalExtensions[] = $id;
             }
             if (!$target || !$container->hasDefinition($target)) {
                 continue;
             }
             $container->getDefinition($target)->addMethodCall('addExtension', array(new Reference($id)));
         }
     }
     $extensionConfig = $container->getParameter('sonata.admin.extension.map');
     $extensionMap = $this->flattenExtensionConfiguration($extensionConfig);
     foreach ($container->findTaggedServiceIds('sonata.admin') as $id => $attributes) {
         $admin = $container->getDefinition($id);
         foreach ($universalExtensions as $extension) {
             $admin->addMethodCall('addExtension', array(new Reference($extension)));
         }
         $extensions = $this->getExtensionsForAdmin($id, $admin, $container, $extensionMap);
         foreach ($extensions as $extension) {
             if (!$container->has($extension)) {
                 throw new \InvalidArgumentException(sprintf('Unable to find extension service for id %s', $extension));
             }
             $admin->addMethodCall('addExtension', array(new Reference($extension)));
         }
     }
 }
 /**
  * {@inheritdoc}
  */
 public function process(ContainerBuilder $container)
 {
     $typeIdx = array();
     foreach ($container->findTaggedServiceIds('form.type') as $id => $tags) {
         $typeIdx[] = $id;
     }
     $typeExtensionIdx = array();
     foreach ($container->findTaggedServiceIds('form.type_extension') as $id => $tag) {
         $typeExtensionIdx[] = $id;
     }
     $container->setParameter('sonata.core.form.types', $typeIdx);
     $container->setParameter('sonata.core.form.type_extensions', $typeExtensionIdx);
     // nothing to do
     if (!$container->hasDefinition('sonata.core.form.extension.dependency')) {
         return;
     }
     // get factories
     $original = $container->getDefinition('form.extension');
     $factory = $container->getDefinition('sonata.core.form.extension.dependency');
     $factory->replaceArgument(1, $original->getArgument(1));
     $factory->replaceArgument(2, $original->getArgument(2));
     $factory->replaceArgument(3, $original->getArgument(3));
     $container->removeDefinition('form.extension');
     $container->removeDefinition('sonata.core.form.extension.dependency');
     $container->setDefinition('form.extension', $factory);
 }
 public function load(array $configs, ContainerBuilder $container)
 {
     $processor = new Processor();
     $config = $processor->processConfiguration(new Configuration(), $configs);
     $loader = new XmlFileLoader($container, new FileLocator(array(__DIR__ . '/../Resources/config')));
     $loader->load('services.xml');
     $container->setParameter('jms_i18n_routing.default_locale', $config['default_locale']);
     $container->setParameter('jms_i18n_routing.locales', $config['locales']);
     $container->setParameter('jms_i18n_routing.catalogue', $config['catalogue']);
     $container->setParameter('jms_i18n_routing.strategy', $config['strategy']);
     $this->addClassesToCompile(array($container->getDefinition('jms_i18n_routing.router')->getClass()));
     if ('prefix' === $config['strategy']) {
         $container->getDefinition('jms_i18n_routing.locale_choosing_listener')->setPublic(true)->addTag('kernel.event_listener', array('event' => 'kernel.exception', 'priority' => 128));
     }
     if ($config['hosts']) {
         $container->getDefinition('jms_i18n_routing.router')->addMethodCall('setHostMap', array($config['hosts']));
         $container->getDefinition('jms_i18n_routing.locale_changing_listener')->setPublic(true)->addTag('kernel.event_listener', array('event' => 'kernel.request', 'priority' => 120))->addArgument(array_flip($config['hosts']));
         $this->addClassesToCompile(array($container->getDefinition('jms_i18n_routing.locale_changing_listener')->getClass()));
     }
     // remove route extractor if JMSTranslationBundle is not enabled to avoid any problems
     $bundles = $container->getParameter('kernel.bundles');
     if (!isset($bundles['JMSTranslationBundle'])) {
         $container->removeDefinition('jms_i18n_routing.route_translation_extractor');
     }
 }
 /**
  * {@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%"));
 }
 /**
  * @inheritdoc
  */
 public function process(ContainerBuilder $container)
 {
     $taggedServices = $container->findTaggedServiceIds('ojezu.add_call_to_remote_service');
     foreach ($taggedServices as $serviceName => $tags) {
         foreach ($tags as $tag) {
             $remoteService = $tag['remote_service'];
             if ($remoteService[0] === '@') {
                 $remoteService = $container->getDefinition(substr($remoteService, 1));
             }
             $arguments = [];
             foreach ($tag as $attributeName => $attributeValue) {
                 $match = [];
                 if (preg_match('/^argument\\.(\\d+)$/', $attributeName, $match)) {
                     if (is_string($attributeValue)) {
                         if ($attributeValue === '@') {
                             $attributeValue = $container->getDefinition($serviceName);
                         } elseif ($attributeValue[0] === '@') {
                             $attributeValue = $container->getDefinition(substr($attributeValue, 1));
                         }
                     }
                     $arguments[(int) $match[1]] = $attributeValue;
                 }
             }
             $remoteService->addMethodCall($tag['method'], array_values($arguments));
         }
     }
 }
 /**
  * {@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(sprintf('services.%s.yml', $config['db_driver']));
     $container->setParameter($this->getAlias() . '.db_driver', $config['db_driver']);
     $container->setParameter($this->getAlias() . '.model_manager_name', $config['model_manager_name']);
     $container->setParameter($this->getAlias() . '.cronjob_class', $config['cronjob_class']);
     $container->setParameter($this->getAlias() . '.cronjob_console', $config['cronjob_console']);
     $container->setParameter($this->getAlias() . '.logs_path', $config['logs_path']);
     if ('orm' === $config['db_driver']) {
         $managerService = $this->getAlias() . '.entity_manager';
         $doctrineService = 'doctrine';
     } else {
         $managerService = '';
         $doctrineService = '';
     }
     $definition = $container->getDefinition($managerService);
     if (method_exists($definition, 'setFactory')) {
         $definition->setFactory(array(new Reference($doctrineService), 'getManager'));
     } else {
         $definition->setFactoryService($doctrineService);
         $definition->setFactoryMethod('getManager');
     }
     $container->setAlias($this->getAlias() . '.manager', $config['crontab_manager']);
     $definition = $container->getDefinition($config['crontab_manager']);
     $definition->addMethodCall('registryConfigCronjobs', array($config['jobs']));
     $loader->load('services.yml');
 }
 public function process(ContainerBuilder $container)
 {
     if (!$container->hasDefinition('sonata.notification.dispatcher')) {
         return;
     }
     $definition = $container->getDefinition('sonata.notification.dispatcher');
     $informations = array();
     foreach ($container->findTaggedServiceIds('sonata.notification.consumer') as $id => $events) {
         foreach ($events as $event) {
             $priority = isset($event['priority']) ? $event['priority'] : 0;
             if (!isset($event['type'])) {
                 throw new \InvalidArgumentException(sprintf('Service "%s" must define the "type" attribute on "sonata.notification" tags.', $id));
             }
             if (!isset($informations[$event['type']])) {
                 $informations[$event['type']] = array();
             }
             $informations[$event['type']][] = $id;
             $definition->addMethodCall('addListenerService', array($event['type'], array($id, 'process'), $priority));
         }
     }
     $container->getDefinition('sonata.notification.consumer.metadata')->replaceArgument(0, $informations);
     if ($container->getParameter('sonata.notification.event.iteration_listeners')) {
         $ids = $container->getParameter('sonata.notification.event.iteration_listeners');
         foreach ($ids as $serviceId) {
             $definition = $container->getDefinition($serviceId);
             $class = new \ReflectionClass($definition->getClass());
             if (!$class->implementsInterface('Sonata\\NotificationBundle\\Event\\IterationListener')) {
                 throw new RuntimeException('Iteration listeners must implement Sonata\\NotificationBundle\\Event\\IterationListener');
             }
             $definition->addTag('kernel.event_listener', array('event' => IterateEvent::EVENT_NAME, 'method' => 'iterate'));
         }
     }
 }
Пример #9
0
 /**
  * {@inheritDoc}
  */
 public function load(array $configs, ContainerBuilder $container)
 {
     $configuration = new Configuration();
     $config = $this->processConfiguration($configuration, $configs);
     $container->setParameter('rs_queue.queues', $config['queues']);
     $container->setParameter('rs_queue.serializer.class', $config['serializer']);
     $container->setParameter('rs_queue.server.redis', $config['server']['redis']);
     $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
     $loader->load('services.yml');
     // BC sf < 2.6
     $definition = $container->getDefinition('rs_queue.serializer');
     if (method_exists($definition, 'setFactory')) {
         $definition->setFactory(array(new Reference('rs_queue.serializer.factory'), 'get'));
     } else {
         $definition->setFactoryService('rs_queue.serializer.factory');
         $definition->setFactoryMethod('get');
     }
     // BC sf < 2.6
     $definition = $container->getDefinition('rs_queue.redis');
     if (method_exists($definition, 'setFactory')) {
         $definition->setFactory(array(new Reference('rs_queue.redis.factory'), 'get'));
     } else {
         $definition->setFactoryService('rs_queue.redis.factory');
         $definition->setFactoryMethod('get');
     }
 }
Пример #10
0
 /**
  * {@inheritdoc}
  */
 public function process(ContainerBuilder $container)
 {
     // add inference types
     $inferenceTypeContainer = $container->getDefinition('rezzza.ruler.inference_type_container');
     foreach ($container->findTaggedServiceIds('rezzza.ruler.inference_type') as $id => $tagAttributes) {
         $inferenceTypeContainer->addMethodCall('add', array(new Reference($id)));
     }
     // add events
     $eventDatas = $container->getParameter('rezzza.ruler.events');
     $eventContainer = $container->getDefinition('rezzza.ruler.event.container');
     $events = array();
     foreach ($eventDatas as $key => $data) {
         $event = new Definition('Rezzza\\RulerBundle\\Ruler\\Event\\Event', array($key, $data['label'], $data['context_builder']));
         $events[$key] = $event;
         $eventContainer->addMethodCall('add', array($event));
     }
     // add inferences
     $inferenceDatas = $container->getParameter('rezzza.ruler.inferences');
     $inferenceContainer = $container->getDefinition('rezzza.ruler.inference_container');
     foreach ($inferenceDatas as $key => $data) {
         $inference = new Definition('Rezzza\\RulerBundle\\Ruler\\Inference\\Inference', array($key, $data['type'], $data['description'], $data['event']));
         foreach ($data['event'] as $event) {
             if (!isset($events[$event])) {
                 throw new \LogicException(sprintf('Event "%s" is not defined', $event));
             }
             $events[$event]->addMethodCall('addInference', array($inference));
         }
         $inferenceContainer->addMethodCall('add', array($inference));
     }
     /* --- functions --- */
     $rulerDefinition = $container->getDefinition('rezzza.ruler');
     foreach ($container->findTaggedServiceIds('rezzza.ruler.functions') as $id => $tagAttributes) {
         $rulerDefinition->addMethodCall('addFunctionCollection', array(new Reference($id)));
     }
 }
 /**
  * {@inheritDoc}
  */
 public function process(ContainerBuilder $container)
 {
     if (!$this->integrationExtension->isVarTagValidatorEnabled()) {
         if (count($container->findTaggedServiceIds('validator.var_tag.constraint_factory')) > 0) {
             throw new \RuntimeException('Could not compile var tag validator constraint factory, because system is not enabled.');
         }
         return;
     }
     $registryDefinition = $container->getDefinition('validator.var_tag.constraint_factory_registry');
     foreach ($container->findTaggedServiceIds('validator.var_tag.constraint_factory') as $id => $tags) {
         $factoryDefinition = $container->getDefinition($id);
         $class = $factoryDefinition->getClass();
         try {
             $class = $container->getParameterBag()->resolveValue($class);
             $refClass = new \ReflectionClass($class);
             $requiredInterface = 'FivePercent\\Component\\VarTagValidator\\Constraint\\ConstraintFactoryInterface';
             if (!$refClass->implementsInterface($requiredInterface)) {
                 throw new \RuntimeException(sprintf('The var tag constraint factory should implement "%s" interface.', $requiredInterface));
             }
             foreach ($tags as $attributes) {
                 if (empty($attributes['type'])) {
                     throw new \RuntimeException('Missing attribute "type".');
                 }
                 $registryDefinition->addMethodCall('addConstraintFactory', [$attributes['type'], new Reference($id)]);
             }
         } catch (\Exception $e) {
             throw new \RuntimeException(sprintf('Could not compile var tag validator constraint factory with service id "%s".', $id));
         }
     }
 }
Пример #12
0
 /**
  * @param \Symfony\Component\DependencyInjection\ContainerBuilder $container
  */
 public function process(ContainerBuilder $container)
 {
     if (!$container->hasDefinition('ezpublish.chain_router')) {
         return;
     }
     $chainRouter = $container->getDefinition('ezpublish.chain_router');
     // Enforce default router to be part of the routing chain
     // The default router will be given the highest priority so that it will be used by default
     if ($container->hasDefinition('router.default')) {
         $defaultRouter = $container->getDefinition('router.default');
         $defaultRouter->addMethodCall('setSiteAccess', array(new Reference('ezpublish.siteaccess')));
         $defaultRouter->addMethodCall('setConfigResolver', array(new Reference('ezpublish.config.resolver')));
         $defaultRouter->addMethodCall('setNonSiteAccessAwareRoutes', array('%ezpublish.default_router.non_siteaccess_aware_routes%'));
         $defaultRouter->addMethodCall('setLegacyAwareRoutes', array('%ezpublish.default_router.legacy_aware_routes%'));
         $defaultRouter->addMethodCall('setSiteAccessRouter', array(new Reference('ezpublish.siteaccess_router')));
         if (!$defaultRouter->hasTag('router')) {
             $defaultRouter->addTag('router', array('priority' => 255));
         }
     }
     foreach ($container->findTaggedServiceIds('router') as $id => $attributes) {
         $priority = isset($attributes[0]['priority']) ? (int) $attributes[0]['priority'] : 0;
         // Priority range is between -255 (the lowest) and 255 (the highest)
         if ($priority > 255) {
             $priority = 255;
         }
         if ($priority < -255) {
             $priority = -255;
         }
         $chainRouter->addMethodCall('add', array(new Reference($id), $priority));
     }
 }
 public function process(ContainerBuilder $container)
 {
     if (!$container->hasDefinition('templating.engine')) {
         return;
     }
     $renderers = array();
     foreach ($container->findTaggedServiceIds('templating.renderer') as $id => $attributes) {
         if (isset($attributes[0]['alias'])) {
             $renderers[$attributes[0]['alias']] = new Reference($id);
             $container->getDefinition($id)->addMethodCall('setEngine', array(new Reference('templating.engine')));
         }
     }
     $helpers = array();
     foreach ($container->findTaggedServiceIds('templating.helper') as $id => $attributes) {
         if (isset($attributes[0]['alias'])) {
             $helpers[$attributes[0]['alias']] = $id;
         }
     }
     $definition = $container->getDefinition('templating.engine');
     $arguments = $definition->getArguments();
     $arguments[2] = $renderers;
     $definition->setArguments($arguments);
     if (count($helpers) > 0) {
         $definition->addMethodCall('setHelpers', array($helpers));
     }
 }
 /**
  * {@inheritDoc}
  */
 public function process(ContainerBuilder $container)
 {
     // WebHome Auth url in user bar
     if ($container->hasParameter('webhome_auth_url')) {
         $container->getDefinition('webhome.menu.user_bar')->addArgument($container->getParameter('webhome_auth_url'));
     }
     // Listener for build menu
     if (!$container->hasDefinition('webhome.listener.menu')) {
         return;
     }
     $config = $container->getExtensionConfig('ndewez_web_home_common')[0];
     $menuListener = $container->getDefinition('webhome.listener.menu');
     if (isset($config['menu']['getter'])) {
         if (!$container->hasDefinition($config['menu']['getter'])) {
             throw new InvalidArgumentException(sprintf('Service %s doesn\'t exists', $config['menu']['getter']));
         }
         $menuListener->addMethodCall('setGetter', [$container->getDefinition($config['menu']['getter'])]);
     }
     if (isset($config['menu']['builder'])) {
         if (!$container->hasDefinition($config['menu']['builder'])) {
             throw new InvalidArgumentException(sprintf('Service %s doesn\'t exists', $config['menu']['builder']));
         }
         $menuListener->addMethodCall('setBuilderMenuItems', [$container->getDefinition($config['menu']['builder'])]);
     }
     if (isset($config['menu']['builder'])) {
         $menuListener->addMethodCall('setUseSession', [$config['menu']['session']]);
     }
 }
Пример #15
0
 public function process(ContainerBuilder $container)
 {
     if (!$container->hasDefinition($this->dispatcherService)) {
         return;
     }
     $definition = $container->getDefinition($this->dispatcherService);
     foreach ($container->findTaggedServiceIds($this->listenerTag) as $id => $events) {
         foreach ($events as $event) {
             $priority = isset($event['priority']) ? $event['priority'] : 0;
             if (!isset($event['event'])) {
                 throw new \InvalidArgumentException(sprintf('Service "%s" must define the "event" attribute on "kernel.event_listener" tags.', $id));
             }
             if (!isset($event['method'])) {
                 $event['method'] = 'on' . preg_replace_callback(array('/(?<=\\b)[a-z]/i', '/[^a-z0-9]/i'), function ($matches) {
                     return strtoupper($matches[0]);
                 }, $event['event']);
                 $event['method'] = preg_replace('/[^a-z0-9]/i', '', $event['method']);
             }
             $definition->addMethodCall('addListenerService', array($event['event'], array($id, $event['method']), $priority));
         }
     }
     foreach ($container->findTaggedServiceIds($this->subscriberTag) as $id => $attributes) {
         // We must assume that the class value has been correctly filled, even if the service is created by a factory
         $class = $container->getDefinition($id)->getClass();
         $refClass = new \ReflectionClass($class);
         $interface = 'Symfony\\Component\\EventDispatcher\\EventSubscriberInterface';
         if (!$refClass->implementsInterface($interface)) {
             throw new \InvalidArgumentException(sprintf('Service "%s" must implement interface "%s".', $id, $interface));
         }
         $definition->addMethodCall('addSubscriberService', array($id, $class));
     }
 }
 /**
  * {@inheritdoc}
  */
 public function process(ContainerBuilder $container)
 {
     $pool = $container->getDefinition('sonata.product.pool');
     $calls = $pool->getMethodCalls();
     $pool->setMethodCalls(array());
     $map = array();
     foreach ($calls as $method => $arguments) {
         if ($arguments[0] !== '__hack') {
             $pool->addMethodCall($arguments[0], $arguments[1]);
             continue;
         }
         foreach ($arguments[1] as $code => $options) {
             // define a new ProductDefinition
             $definition = new Definition('Sonata\\Component\\Product\\ProductDefinition', array(new Reference($options['provider']), new Reference($options['manager'])));
             $definition->setPublic(false);
             $container->setDefinition($code, $definition);
             $container->getDefinition($options['provider'])->addMethodCall('setCode', array($code));
             $pool->addMethodCall('addProduct', array($code, new Reference($code)));
             $map[$code] = $container->getDefinition($options['manager'])->getArgument(0);
             $container->getDefinition($options['provider'])->addMethodCall('setBasketElementManager', array(new Reference('sonata.basket_element.manager')));
             $container->getDefinition($options['provider'])->addMethodCall('setCurrencyPriceCalculator', array(new Reference('sonata.price.currency.calculator')));
             $container->getDefinition($options['provider'])->addMethodCall('setProductCategoryManager', array(new Reference('sonata.product_category.product')));
             $container->getDefinition($options['provider'])->addMethodCall('setProductCollectionManager', array(new Reference('sonata.product_collection.product')));
             $container->getDefinition($options['provider'])->addMethodCall('setOrderElementClassName', array($container->getParameter('sonata.order.order_element.class')));
             if (array_key_exists('variations', $options)) {
                 $container->getDefinition($options['provider'])->addMethodCall('setVariationFields', array($options['variations']['fields']));
             }
         }
     }
     $container->getDefinition('sonata.product.subscriber.orm')->replaceArgument(0, $map);
 }
 /**
  * {@inheritdoc}
  */
 public function process(ContainerBuilder $container)
 {
     $tags = $container->findTaggedServiceIds(self::TAG_NAME);
     foreach ($tags as $id => $tag) {
         /** @var Definition $serviceLinkDef */
         $serviceLinkDef = $container->getDefinition($id);
         if (!isset($tag[0]['service'])) {
             throw new \RuntimeException(sprintf("Tag '%s' for service '%s' doesn't have required param 'service'", self::TAG_NAME, $id));
         }
         $serviceId = $tag[0]['service'];
         $isOptional = false;
         if (strpos($serviceId, '?') === 0) {
             $serviceId = substr($serviceId, 1);
             $isOptional = true;
         }
         if ($container->hasDefinition($serviceId)) {
             // the service we are referred to must be public
             $serviceDef = $container->getDefinition($serviceId);
             if (!$serviceDef->isPublic()) {
                 $serviceDef->setPublic(true);
             }
         } elseif (!$isOptional) {
             throw new \RuntimeException(sprintf('Target service "%s" is undefined. The service link "%s" with tag "%s" and tag-service "%s"', $serviceId, $id, self::TAG_NAME, $serviceId));
         }
         $serviceLinkDef->setClass('Oro\\Bundle\\SecurityBundle\\DependencyInjection\\Utils\\ServiceLink');
         $serviceLinkDef->setArguments([new Reference('service_container'), $serviceId, $isOptional]);
     }
 }
Пример #18
0
 /** {@inheritdoc} */
 public function load(array $config, ContainerBuilder $container)
 {
     // Load configuration
     (new YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')))->load('webpack.yml');
     // Retrieve all configuration entities
     $bundles = $container->getParameter('kernel.bundles');
     $builder_definition = $container->getDefinition('hostnet_webpack.bridge.config_generator');
     $config_extension_ids = array_keys($container->findTaggedServiceIds('hostnet_webpack.config_extension'));
     $config_definitions = [];
     $config_class_names = [];
     foreach ($config_extension_ids as $id) {
         $config_definitions[$id] = $container->getDefinition($id);
         $config_class_names[$id] = $container->getDefinition($id)->getClass();
     }
     $configuration = new Configuration(array_keys($bundles), $config_class_names);
     $config = $this->processConfiguration($configuration, $config);
     $container->addResource(new FileResource((new \ReflectionClass(Configuration::class))->getFileName()));
     // Select the correct node binary for the platform we're currently running on.
     $config['node']['binary'] = $config['node']['binary'][$this->getPlatformKey()];
     $config['node']['node_modules_path'] = !empty($config['node']['node_modules_path']) ? $config['node']['node_modules_path'] : getenv('NODE_PATH');
     // Parse application config into the config generator
     foreach ($config_definitions as $id => $definition) {
         /* @var $definition Definition */
         $builder_definition->addMethodCall('addExtension', [new Reference($id)]);
         $definition->addArgument($config);
     }
     // Pass the configuration to a container parameter for the CompilerPass and profiler to read.
     $container->setParameter('hostnet_webpack_config', $config);
 }
 public function process(ContainerBuilder $container)
 {
     if (!$container->hasParameter('nelmio_browser_adaptive_parser')) {
         return;
     }
     $container->getDefinition('nelmio_security.ua_parser')->setArguments(array($container->getDefinition($container->getParameter('nelmio_browser_adaptive_parser'))));
 }
Пример #20
0
 /**
  * {@inheritdoc}
  */
 public function process(ContainerBuilder $container)
 {
     foreach ($container->findTaggedServiceIds('snc_redis.connection_parameters') as $id => $attr) {
         $clientAlias = $attr[0]['clientAlias'];
         $parameterDefinition = $container->getDefinition($id);
         $parameters = $parameterDefinition->getArgument(0);
         if ($parameters['logging']) {
             $optionId = sprintf('snc_redis.client.%s_options', $clientAlias);
             $option = $container->getDefinition($optionId);
             if (1 < count($option->getArguments())) {
                 throw new \RuntimeException('Please check the predis option arguments.');
             }
             $arguments = $option->getArgument(0);
             $connectionFactoryId = sprintf('snc_redis.%s_connectionfactory', $clientAlias);
             $connectionFactoryDef = new Definition($container->getParameter('snc_redis.connection_factory.class'));
             $connectionFactoryDef->setPublic(false);
             $connectionFactoryDef->addArgument(new Reference(sprintf('snc_redis.client.%s_profile', $clientAlias)));
             $connectionFactoryDef->addMethodCall('setConnectionWrapperClass', array($container->getParameter('snc_redis.connection_wrapper.class')));
             $connectionFactoryDef->addMethodCall('setLogger', array(new Reference('snc_redis.logger')));
             $container->setDefinition($connectionFactoryId, $connectionFactoryDef);
             $arguments['connections'] = new Reference($connectionFactoryId);
             $option->replaceArgument(0, $arguments);
         }
     }
 }
 /**
  * @param ContainerBuilder $container
  * @param array            $config
  */
 public function configureDelivery(ContainerBuilder $container, array $config)
 {
     $pool = $container->getDefinition('sonata.delivery.pool');
     $internal = array('free_address_required' => 'sonata.delivery.method.free_address_required', 'free_address_not_required' => 'sonata.delivery.method.free_address_not_required');
     $configured = array();
     foreach ($config['services'] as $id => $settings) {
         if (array_key_exists($id, $internal)) {
             $id = $internal[$id];
             $definition = $container->getDefinition($id);
             $definition->addMethodCall('setName', array($settings['name']));
             $definition->addMethodCall('setCode', array($settings['code']));
             $definition->addMethodCall('setPriority', array($settings['priority']));
             $configured[$settings['code']] = $id;
         }
     }
     foreach ($config['methods'] as $code => $id) {
         if (array_key_exists($code, $configured)) {
             // Internal service
             $id = $configured[$code];
         }
         if ($container->hasDefinition($id)) {
             $definition = $container->getDefinition($id);
             $definition->addMethodCall('setEnabled', array(true));
         }
         // add the delivery method in the method pool
         $pool->addMethodCall('addMethod', array(new Reference($id)));
     }
     // Remove unconfigured services
     foreach ($internal as $code => $id) {
         if (false === array_search($id, $configured)) {
             $container->removeDefinition($id);
         }
     }
 }
Пример #22
0
 /**
  * Configure the given ContainerBuilder
  *
  * This method allows a plugin to register additional services with the
  * service container.
  *
  * @param ContainerBuilder $container
  *
  * @return void
  */
 public function configure(ContainerBuilder $container)
 {
     $container->register('packages.plugin.satis.subscriber', 'Terramar\\Packages\\Plugin\\Satis\\EventSubscriber')->addArgument(new Reference('packages.helper.resque'))->addArgument(new Reference('doctrine.orm.entity_manager'))->addTag('kernel.event_subscriber');
     $container->register('packages.plugin.satis.config_helper', 'Terramar\\Packages\\Plugin\\Satis\\ConfigurationHelper')->addArgument(new Reference('doctrine.orm.entity_manager'))->addArgument('%app.root_dir%')->addArgument('%app.cache_dir%');
     $container->getDefinition('packages.controller_manager')->addMethodCall('registerController', array(Actions::PACKAGE_EDIT, 'Terramar\\Packages\\Plugin\\Satis\\Controller::editAction'))->addMethodCall('registerController', array(Actions::PACKAGE_UPDATE, 'Terramar\\Packages\\Plugin\\Satis\\Controller::updateAction'));
     $container->getDefinition('packages.command_registry')->addMethodCall('addCommand', array('Terramar\\Packages\\Plugin\\Satis\\Command\\BuildCommand'))->addMethodCall('addCommand', array('Terramar\\Packages\\Plugin\\Satis\\Command\\UpdateCommand'));
 }
 /**
  * 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');
     }
 }
 /**
  * {@inheritdoc}
  */
 public function load(array $configs, ContainerBuilder $container)
 {
     $configuration = new Configuration();
     $config = $this->processConfiguration($configuration, $configs);
     /**
      * Load definitions
      */
     $loader = new YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
     $loader->load('services.yml');
     $servers = $config['servers'];
     $container->setParameter('laelaps_gearman.servers', $servers);
     /**
      * Build container, if array, add multiple servers, if string add one
      */
     $gearmanClientDefinition = $container->getDefinition('laelaps.gearman.client');
     $gearmanWorkerDefinition = $container->getDefinition('laelaps.gearman.worker');
     if (is_array($servers)) {
         foreach ($servers as $server) {
             list($host, $port) = explode(':', $server);
             $gearmanClientDefinition->addMethodCall('addServer', array($host, $port));
             $gearmanWorkerDefinition->addMethodCall('addServer', array($host, $port));
         }
     } else {
         $gearmanClientDefinition->addMethodCall('addServers', array($servers));
         $gearmanWorkerDefinition->addMethodCall('addServers', array($servers));
     }
 }
 /**
  * @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);
 }
Пример #26
0
 /**
  * {@inheritdoc}
  */
 public function process(ContainerBuilder $container)
 {
     $registry = $container->getDefinition('lug.resource.registry');
     foreach (array_keys($container->findTaggedServiceIds('lug.resource')) as $resource) {
         $registry->addMethodCall('offsetSet', [$container->getDefinition($resource)->getArgument(0), new Reference($resource)]);
     }
 }
 /**
  * {@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));
     }
 }
 public function process(ContainerBuilder $container)
 {
     if (!$container->hasDefinition('security.expressions.compiler')) {
         return;
     }
     $compilerDef = $container->getDefinition('security.expressions.compiler');
     foreach ($container->findTaggedServiceIds('security.expressions.function_compiler') as $id => $attr) {
         $compilerDef->addMethodCall('addFunctionCompiler', array(new Reference($id)));
     }
     foreach ($container->findTaggedServiceIds('security.expressions.type_compiler') as $id => $attr) {
         $compilerDef->addMethodCall('addTypeCompiler', array(new Reference($id)));
     }
     $serviceMap = $parameterMap = array();
     foreach ($container->findTaggedServiceIds('security.expressions.variable') as $id => $attributes) {
         foreach ($attributes as $attr) {
             if (!isset($attr['variable']) || !isset($attr['service']) && !isset($attr['parameter'])) {
                 throw new RuntimeException(sprintf('"variable", and either "service" or "parameter" must be given for tag "security.expressions.variable" for service id "%s".', $id));
             }
             if (isset($attr['service'])) {
                 $serviceMap[$attr['variable']] = $attr['service'];
                 $container->findDefinition($attr['service'])->setPublic(true);
             } else {
                 $parameterMap[$attr['variable']] = $attr['parameter'];
             }
         }
     }
     $container->getDefinition('security.expressions.variable_compiler')->addMethodCall('setMaps', array($serviceMap, $parameterMap));
 }
Пример #29
0
 /**
  * @param \Symfony\Component\DependencyInjection\ContainerBuilder $container
  */
 public function process(ContainerBuilder $container)
 {
     if (!$container->hasDefinition('innomatic.chain_router')) {
         return;
     }
     $chainRouter = $container->getDefinition('innomatic.chain_router');
     // Enforce default router to be part of the routing chain
     // The default router will be given the highest priority so that it will be used by default
     if ($container->hasDefinition('router.default')) {
         $defaultRouter = $container->getDefinition('router.default');
         if (!$defaultRouter->hasTag('router')) {
             $defaultRouter->addTag('router', array('priority' => 255));
         }
     }
     foreach ($container->findTaggedServiceIds('router') as $id => $attributes) {
         $priority = isset($attributes[0]['priority']) ? (int) $attributes[0]['priority'] : 0;
         // Priority range is between -255 (the lowest) and 255 (the highest)
         if ($priority > 255) {
             $priority = 255;
         }
         if ($priority < -255) {
             $priority = -255;
         }
         $chainRouter->addMethodCall('add', array(new Reference($id), $priority));
     }
 }
 /**
  * {@inheritdoc}
  *
  * @throws InvalidConfigurationException
  */
 public function load(array $configs, ContainerBuilder $container)
 {
     $configuration = new Configuration();
     $config = $this->processConfiguration($configuration, $configs);
     foreach ($config as $key => $value) {
         $container->setParameter($this->getAlias() . '.' . $key, $value);
     }
     $loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
     $loader->load('services.xml');
     // Deprecated factory methods handling.
     // To be removed and set directly on config file when bumping Symfony requirements to >=2.6
     $aliceFakerDefinition = $container->getDefinition('hautelook_alice.faker');
     if (method_exists($aliceFakerDefinition, 'setFactory')) {
         $aliceFakerDefinition->setFactory(['Faker\\Factory', 'create']);
     } else {
         $aliceFakerDefinition->setFactoryClass('Faker\\Factory');
         $aliceFakerDefinition->setFactoryMethod('create');
     }
     foreach ($config['db_drivers'] as $driver => $isEnabled) {
         if (true === $isEnabled || null === $isEnabled && true === $this->isExtensionEnabled($driver)) {
             $loader->load(sprintf('%s.xml', $driver));
             if ('orm' === $driver) {
                 $this->setCommandFactory($container->getDefinition('hautelook_alice.doctrine.command.deprecated_load_command'));
                 $this->setCommandFactory($container->getDefinition('hautelook_alice.doctrine.command.load_command'));
             } else {
                 $this->setCommandFactory($container->getDefinition(sprintf('hautelook_alice.doctrine.%s.command.load_command', $driver)));
             }
         }
     }
     $container->getDefinition('hautelook_alice.alice.fixtures.loader')->replaceArgument(3, $container->getParameterBag()->all());
 }