public function process(ServiceDefinition $definition, $tags) { if (is_string($tags)) { $tags = array($tags); } $currentTags = $definition->getTags(); foreach ((array) $tags as $tag => $attrs) { if (is_int($tag) && is_string($attrs)) { $tag = $attrs; $attrs = TRUE; } if (!isset($currentTags[$tag])) { $definition->addTag($tag, $attrs); } } }
/** * @param ServiceDefinition $service * @return array */ private function parseSubscriberTags(ServiceDefinition $service) { $tags = $service->getTags(); // Array contains EVENT_TAG_NAME key if (isset($tags[self::EVENT_TAG_NAME]) && is_array($tags[self::EVENT_TAG_NAME])) { return $tags[self::EVENT_TAG_NAME]; } // Array contains other tags $etags = []; foreach ($tags as $tag => $value) { if (strncmp($tag, self::EVENT_TAG_PREFIX, strlen(self::EVENT_TAG_PREFIX)) === 0) { $etags[] = trim(substr($tag, strlen(self::EVENT_TAG_PREFIX)), '.:'); } } return $etags; }