/** * {@inheritdoc} */ public function process(tubepress_api_ioc_ContainerBuilderInterface $containerBuilder) { $consumerIds = $containerBuilder->findTaggedServiceIds(tubepress_api_ioc_ServiceTags::TAGGED_SERVICES_CONSUMER); foreach ($consumerIds as $consumerId => $tags) { $consumerDefinition = $containerBuilder->getDefinition($consumerId); foreach ($tags as $tagData) { $requiredAttribites = array('tag', 'method'); foreach ($requiredAttribites as $attributeName) { if (!isset($tagData[$attributeName])) { throw new LogicException(sprintf('Service %s must specify %s in its tag data', $consumerId, $attributeName)); } } $matchingServiceIdsToTagData = $containerBuilder->findTaggedServiceIds($tagData['tag']); $references = $this->_buildMethodCallArgument($matchingServiceIdsToTagData); $consumerDefinition->addMethodCall($tagData['method'], array($references)); } } }
private function _doProcess(tubepress_api_ioc_ContainerBuilderInterface $containerBuilder, $serviceSuffix) { if (!$containerBuilder->hasDefinition('Twig_Loader_Filesystem' . $serviceSuffix)) { return; } $twigFsLoaderDefinition = $containerBuilder->getDefinition('Twig_Loader_Filesystem' . $serviceSuffix); $providerIds = $containerBuilder->findTaggedServiceIds('tubepress_spi_template_PathProviderInterface' . $serviceSuffix); foreach ($providerIds as $providerId => $tags) { /* * @var tubepress_spi_template_PathProviderInterface */ $provider = $containerBuilder->get($providerId); $directories = $provider->getTemplateDirectories(); foreach ($directories as $directory) { if (is_dir($directory)) { $twigFsLoaderDefinition->addMethodCall('addPath', array($directory)); } } } }
/** * {@inheritdoc} */ public function process(tubepress_api_ioc_ContainerBuilderInterface $containerBuilder) { if (!$containerBuilder->hasDefinition(tubepress_api_event_EventDispatcherInterface::_)) { return; } $eventDispatcherDefinition = $containerBuilder->getDefinition(tubepress_api_event_EventDispatcherInterface::_); $listenerServiceIds = $containerBuilder->findTaggedServiceIds(tubepress_api_ioc_ServiceTags::EVENT_LISTENER); foreach ($listenerServiceIds as $serviceId => $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 "%s" tags.', $serviceId, tubepress_api_ioc_ServiceTags::EVENT_LISTENER)); } if (!isset($event['method'])) { $onSuffix = preg_replace_callback(array('/(?<=\\b)[a-z]/i', '/[^a-z0-9]/i'), array($this, '_callbackStrToUpper'), $event['event']); $event['method'] = 'on' . $onSuffix; $event['method'] = preg_replace('/[^a-z0-9]/i', '', $event['method']); } $eventDispatcherDefinition->addMethodCall('addListenerService', array($event['event'], array($serviceId, $event['method']), $priority)); } } }