setTags() public method

Sets tags for this definition.
public setTags ( array $tags ) : Definition
$tags array
return Definition the current instance
Example #1
0
 /**
  * If authorization is enabled authentication listener is registered.
  *
  * @param array            $config
  * @param ContainerBuilder $container
  */
 private function registerAuthenticationListener(array $config, ContainerBuilder $container)
 {
     if ($config['authorization']['enabled']) {
         $definition = new Definition($container->getParameter('ongr_api.event_listener.authentication.class'), [new Reference('service_container'), $config['authorization']['secret']]);
         $definition->setTags(['kernel.event_listener' => [['event' => 'kernel.request', 'method' => 'onKernelRequest', 'priority' => 10]]]);
         $container->setDefinition('ongr_api.event_listener.authentication', $definition);
     }
 }
 public function load(array $configs, ContainerBuilder $container)
 {
     $configuration = $this->getConfiguration($configs, $container);
     $config = $this->processConfiguration($configuration, $configs);
     $loader = new XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
     $loader->load('services.xml');
     if (array_key_exists('SensioFrameworkExtraBundle', $container->getParameter('kernel.bundles'))) {
         $definition = new Definition(JsonApiParamConverter::class, [new Reference('qp_woohoolabs_yin.json_api.factory')]);
         $definition->setTags(['request.param_converter' => [[]]]);
         $container->setDefinition('qp_woohoolabs_yin.json_api.param_converter', $definition);
     }
     $container->setAlias('qp_woohoolabs_yin.exception_factory', $config['exception_factory']);
 }
 /**
  * @param ContainerBuilder $container
  * @param string           $service
  */
 private function swapServiceWithProxy(ContainerBuilder $container, string $service)
 {
     $instanceId = sprintf('phpro.annotated_cache.eligable_instance.%s', sha1($service));
     $instance = $container->findDefinition($service);
     $instance->setPublic(false);
     $proxy = new Definition(AccessInterceptorInterface::class);
     $proxy->setFactory([new Reference('phpro.annotation_cache.proxy.generator'), 'generate']);
     $proxy->setArguments([new Reference($instanceId)]);
     // Make sure that the proxy gets all instance tags:
     $proxy->setTags($instance->getTags());
     $instance->clearTags();
     $container->setDefinition($instanceId, $instance);
     $container->setDefinition($service, $proxy);
 }
 /**
  * {@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');
     $queueManagers = [];
     foreach ($config['managers'] as $name => $manager) {
         if (!isset($config['drivers'][$manager['driver']])) {
             throw new InvalidArgumentException("Manager '{$name}' uses unknown driver '{$manager['driver']}'");
         }
         $managerClass = $config['drivers'][$manager['driver']]['class'];
         $defaultOptions = isset($config['drivers'][$manager['driver']]['options']) ? $config['drivers'][$manager['driver']]['options'] : [];
         $options = isset($manager['options']) ? $manager['options'] : [];
         $merged = array_merge(['debug' => $config['debug'], 'retry_limit' => $config['retry_limit'], 'sleep_seconds' => $config['sleep_seconds']], $defaultOptions, $options);
         $container->setParameter("mcfedr_queue_manager.{$name}.options", $merged);
         $managerServiceName = "mcfedr_queue_manager.{$name}";
         $managerDefinition = new Definition($managerClass, [$merged]);
         if ((new \ReflectionClass($managerClass))->implementsInterface(ContainerAwareInterface::class)) {
             $managerDefinition->addMethodCall('setContainer', [new Reference('service_container')]);
         }
         $container->setDefinition($managerServiceName, $managerDefinition);
         $queueManagers[$name] = new Reference($managerServiceName);
         if (isset($config['drivers'][$manager['driver']]['command_class'])) {
             $commandClass = $config['drivers'][$manager['driver']]['command_class'];
             $commandDefinition = new Definition($commandClass, ["mcfedr:queue:{$name}-runner", $merged, new Reference($managerServiceName)]);
             $commandDefinition->setTags(['console.command' => []]);
             $container->setDefinition("mcfedr_queue_manager.runner.{$name}", $commandDefinition);
         }
     }
     if (array_key_exists('default', $queueManagers)) {
         $defaultManager = 'default';
     } else {
         reset($queueManagers);
         $defaultManager = key($queueManagers);
     }
     $container->setDefinition('mcfedr_queue_manager.registry', new Definition(QueueManagerRegistry::class, [$queueManagers, $defaultManager]));
     if ($config['report_memory']) {
         $mem = new Definition(MemoryReportSubscriber::class, [new Reference('logger')]);
         $mem->setTags(['kernel.event_subscriber' => []]);
         $container->setDefinition('mcfedr_queue_manager.memory_report_subscriber', $mem);
     }
     if ($config['doctrine_reset']) {
         $mem = new Definition(DoctrineResetSubscriber::class, [new Reference('doctrine', ContainerInterface::NULL_ON_INVALID_REFERENCE)]);
         $mem->setTags(['kernel.event_subscriber' => []]);
         $container->setDefinition('mcfedr_queue_manager.doctrine_reset_subscriber', $mem);
     }
 }
 /**
  * {@inheritdoc}
  */
 public function process(ContainerBuilder $container)
 {
     $definitions = $container->findTaggedServiceIds('ongr_settings.setting_aware');
     foreach ($definitions as $serviceId => $tags) {
         $definition = $container->getDefinition($serviceId);
         $initialTags = $definition->getTags();
         $definition->clearTags();
         $container->setDefinition("{$serviceId}_base", $definition);
         $callMap = [];
         foreach ($tags as $tag) {
             $callMap[$tag['setting']] = isset($tag['method']) ? $tag['method'] : null;
         }
         $proxy = new Definition($definition->getClass(), [$callMap, new Reference("{$serviceId}_base")]);
         $proxy->setFactoryService('ongr_settings.setting_aware_service_factory');
         $proxy->setFactoryMethod('get');
         unset($initialTags['ongr_settings.setting_aware']);
         $proxy->setTags($initialTags);
         $container->setDefinition($serviceId, $proxy);
     }
 }
 /**
  * @param ContainerBuilder $container
  */
 private function prependElasticaProductListener(ContainerBuilder $container)
 {
     if (!$container->hasExtension('fos_elastica') || !$container->hasExtension('sylius_search')) {
         return;
     }
     $configuration = new SyliusSearchConfiguration();
     $processor = new Processor();
     $syliusSearchConfig = $processor->processConfiguration($configuration, $container->getExtensionConfig('sylius_search'));
     $engine = $syliusSearchConfig['engine'];
     if ($engine === 'elasticsearch') {
         $tags = ['doctrine.event_listener' => [['name' => 'doctrine.event_listener', 'event' => 'postPersist'], ['name' => 'doctrine.event_listener', 'event' => 'postUpdate'], ['name' => 'doctrine.event_listener', 'event' => 'postRemove'], ['name' => 'doctrine.event_listener', 'event' => 'postFlush']]];
         $configuration = new FosElasticaConfiguration(false);
         $processor = new Processor();
         $elasticaConfig = $processor->processConfiguration($configuration, $container->getExtensionConfig('fos_elastica'));
         foreach ($elasticaConfig['indexes'] as $index => $config) {
             $elasticaProductListenerDefinition = new Definition(ElasticaProductListener::class);
             $elasticaProductListenerDefinition->addArgument(new Reference('fos_elastica.object_persister.' . $index . '.product'));
             $elasticaProductListenerDefinition->setTags($tags);
             $container->setDefinition('sylius_product.listener.index_' . $index . '.product_update', $elasticaProductListenerDefinition);
         }
     }
 }
 /**
  * Resolves the definition.
  *
  * @param ContainerBuilder    $container  The ContainerBuilder
  * @param DefinitionDecorator $definition
  *
  * @return Definition
  *
  * @throws \RuntimeException When the definition is invalid
  */
 private function resolveDefinition(ContainerBuilder $container, DefinitionDecorator $definition)
 {
     if (!$container->hasDefinition($parent = $definition->getParent())) {
         throw new RuntimeException(sprintf('The parent definition "%s" defined for definition "%s" does not exist.', $parent, $this->currentId));
     }
     $parentDef = $container->getDefinition($parent);
     if ($parentDef instanceof DefinitionDecorator) {
         $id = $this->currentId;
         $this->currentId = $parent;
         $parentDef = $this->resolveDefinition($container, $parentDef);
         $container->setDefinition($parent, $parentDef);
         $this->currentId = $id;
     }
     $this->compiler->addLogMessage($this->formatter->formatResolveInheritance($this, $this->currentId, $parent));
     $def = new Definition();
     // merge in parent definition
     // purposely ignored attributes: scope, abstract, tags
     $def->setClass($parentDef->getClass());
     $def->setArguments($parentDef->getArguments());
     $def->setMethodCalls($parentDef->getMethodCalls());
     $def->setProperties($parentDef->getProperties());
     $def->setAutowiringTypes($parentDef->getAutowiringTypes());
     if ($parentDef->getFactoryClass(false)) {
         $def->setFactoryClass($parentDef->getFactoryClass(false));
     }
     if ($parentDef->getFactoryMethod(false)) {
         $def->setFactoryMethod($parentDef->getFactoryMethod(false));
     }
     if ($parentDef->getFactoryService(false)) {
         $def->setFactoryService($parentDef->getFactoryService(false));
     }
     if ($parentDef->isDeprecated()) {
         $def->setDeprecated(true, $parentDef->getDeprecationMessage('%service_id%'));
     }
     $def->setFactory($parentDef->getFactory());
     $def->setConfigurator($parentDef->getConfigurator());
     $def->setFile($parentDef->getFile());
     $def->setPublic($parentDef->isPublic());
     $def->setLazy($parentDef->isLazy());
     // overwrite with values specified in the decorator
     $changes = $definition->getChanges();
     if (isset($changes['class'])) {
         $def->setClass($definition->getClass());
     }
     if (isset($changes['factory_class'])) {
         $def->setFactoryClass($definition->getFactoryClass(false));
     }
     if (isset($changes['factory_method'])) {
         $def->setFactoryMethod($definition->getFactoryMethod(false));
     }
     if (isset($changes['factory_service'])) {
         $def->setFactoryService($definition->getFactoryService(false));
     }
     if (isset($changes['factory'])) {
         $def->setFactory($definition->getFactory());
     }
     if (isset($changes['configurator'])) {
         $def->setConfigurator($definition->getConfigurator());
     }
     if (isset($changes['file'])) {
         $def->setFile($definition->getFile());
     }
     if (isset($changes['public'])) {
         $def->setPublic($definition->isPublic());
     }
     if (isset($changes['lazy'])) {
         $def->setLazy($definition->isLazy());
     }
     if (isset($changes['deprecated'])) {
         $def->setDeprecated($definition->isDeprecated(), $definition->getDeprecationMessage('%service_id%'));
     }
     if (isset($changes['decorated_service'])) {
         $decoratedService = $definition->getDecoratedService();
         if (null === $decoratedService) {
             $def->setDecoratedService($decoratedService);
         } else {
             $def->setDecoratedService($decoratedService[0], $decoratedService[1], $decoratedService[2]);
         }
     }
     // merge arguments
     foreach ($definition->getArguments() as $k => $v) {
         if (is_numeric($k)) {
             $def->addArgument($v);
             continue;
         }
         if (0 !== strpos($k, 'index_')) {
             throw new RuntimeException(sprintf('Invalid argument key "%s" found.', $k));
         }
         $index = (int) substr($k, strlen('index_'));
         $def->replaceArgument($index, $v);
     }
     // merge properties
     foreach ($definition->getProperties() as $k => $v) {
         $def->setProperty($k, $v);
     }
     // append method calls
     if (count($calls = $definition->getMethodCalls()) > 0) {
         $def->setMethodCalls(array_merge($def->getMethodCalls(), $calls));
     }
     // merge autowiring types
     foreach ($definition->getAutowiringTypes() as $autowiringType) {
         $def->addAutowiringType($autowiringType);
     }
     // these attributes are always taken from the child
     $def->setAbstract($definition->isAbstract());
     $def->setScope($definition->getScope(false), false);
     $def->setShared($definition->isShared());
     $def->setTags($definition->getTags());
     return $def;
 }
 /**
  * Resolves the definition
  *
  * @param string              $id         The definition identifier
  * @param DefinitionDecorator $definition
  *
  * @return Definition
  */
 private function resolveDefinition($id, DefinitionDecorator $definition)
 {
     if (!$this->container->hasDefinition($parent = $definition->getParent())) {
         throw new RuntimeException(sprintf('The parent definition "%s" defined for definition "%s" does not exist.', $parent, $id));
     }
     $parentDef = $this->container->getDefinition($parent);
     if ($parentDef instanceof DefinitionDecorator) {
         $parentDef = $this->resolveDefinition($parent, $parentDef);
     }
     $this->compiler->addLogMessage($this->formatter->formatResolveInheritance($this, $id, $parent));
     $def = new Definition();
     // merge in parent definition
     // purposely ignored attributes: scope, abstract, tags
     $def->setClass($parentDef->getClass());
     $def->setArguments($parentDef->getArguments());
     $def->setMethodCalls($parentDef->getMethodCalls());
     $def->setProperties($parentDef->getProperties());
     $def->setFactoryClass($parentDef->getFactoryClass());
     $def->setFactoryMethod($parentDef->getFactoryMethod());
     $def->setFactoryService($parentDef->getFactoryService());
     $def->setConfigurator($parentDef->getConfigurator());
     $def->setFile($parentDef->getFile());
     $def->setPublic($parentDef->isPublic());
     // overwrite with values specified in the decorator
     $changes = $definition->getChanges();
     if (isset($changes['class'])) {
         $def->setClass($definition->getClass());
     }
     if (isset($changes['factory_class'])) {
         $def->setFactoryClass($definition->getFactoryClass());
     }
     if (isset($changes['factory_method'])) {
         $def->setFactoryMethod($definition->getFactoryMethod());
     }
     if (isset($changes['factory_service'])) {
         $def->setFactoryService($definition->getFactoryService());
     }
     if (isset($changes['configurator'])) {
         $def->setConfigurator($definition->getConfigurator());
     }
     if (isset($changes['file'])) {
         $def->setFile($definition->getFile());
     }
     if (isset($changes['public'])) {
         $def->setPublic($definition->isPublic());
     }
     // merge arguments
     foreach ($definition->getArguments() as $k => $v) {
         if (is_numeric($k)) {
             $def->addArgument($v);
             continue;
         }
         if (0 !== strpos($k, 'index_')) {
             throw new RuntimeException(sprintf('Invalid argument key "%s" found.', $k));
         }
         $index = (int) substr($k, strlen('index_'));
         $def->replaceArgument($index, $v);
     }
     // merge properties
     foreach ($definition->getProperties() as $k => $v) {
         $def->setProperty($k, $v);
     }
     // append method calls
     if (count($calls = $definition->getMethodCalls()) > 0) {
         $def->setMethodCalls(array_merge($def->getMethodCalls(), $calls));
     }
     // these attributes are always taken from the child
     $def->setAbstract($definition->isAbstract());
     $def->setScope($definition->getScope());
     $def->setTags($definition->getTags());
     // set new definition on container
     $this->container->setDefinition($id, $def);
     return $def;
 }
 /**
  * @param string $tag
  * @param array  $attributes
  * @param string $className
  * @param array  $arguments
  *
  * @return Definition
  */
 private function getTaggedService($tag, array $attributes = [], $className = \stdClass::class, $arguments = [])
 {
     $definition = new Definition($className, $arguments);
     $definition->setTags([$tag => [$attributes]]);
     return $definition;
 }
Example #10
0
 /**
  * Set tags for this definition
  *
  * @param array $tags
  *
  * @return tubepress_api_ioc_DefinitionInterface the current instance
  *
  * @api
  * @since 4.0.0
  */
 public function setTags(array $tags)
 {
     $this->_underlyingSymfonyDefinition->setTags($tags);
     return $this;
 }
 /**
  * Make sure to create a PRS-6 service that wraps the doctrine service.
  *
  * @param ContainerBuilder $container
  * @param string           $doctrineServiceId
  * @param string           $name
  */
 protected function createPsr7CompliantService(ContainerBuilder $container, $doctrineServiceId, $name)
 {
     // This is the service id for the PSR6 provider. This is the one that we use.
     $serviceId = 'cache.doctrine_adapter.provider.' . $name;
     // Register the CacheItemPoolInterface definition
     $def = new Definition(DoctrineCachePool::class);
     $def->addArgument(new Reference($doctrineServiceId));
     $def->setTags(['cache.provider' => []]);
     $container->setDefinition($serviceId, $def);
     $container->setAlias('cache.provider.' . $name, $serviceId);
 }