diff --git a/src/DependencyInjection/UnleashClientExtension.php b/src/DependencyInjection/UnleashClientExtension.php new file mode 100644 index 0000000..ff4982a --- /dev/null +++ b/src/DependencyInjection/UnleashClientExtension.php @@ -0,0 +1,103 @@ + $configs + * + * @throws Exception + */ + public function load(array $configs, ContainerBuilder $container): void + { + $loader = new YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); + $loader->load('services.yaml'); + $loader->load('autowiring.yaml'); + if (interface_exists(ExtensionInterface::class)) { + $loader->load('twig.yaml'); + } + + $configs = $this->processConfiguration($this->getConfiguration([], $container), $configs); + $container->setParameter('unleash.client.internal.service_configs', [ + 'http_client_service' => $configs['http_client_service'], + 'request_factory_service' => $configs['request_factory_service'], + 'cache_service' => $configs['cache_service'], + ]); + $container->setParameter('unleash.client.internal.app_url', $configs['app_url'] ?? ''); + $container->setParameter('unleash.client.internal.instance_id', $configs['instance_id'] ?? ''); + $container->setParameter('unleash.client.internal.app_name', $configs['app_name'] ?? ''); + $container->setParameter('unleash.client.internal.cache_ttl', $configs['cache_ttl']); + $container->setParameter('unleash.client.internal.metrics_send_interval', $configs['metrics_send_interval']); + $container->setParameter('unleash.client.internal.metrics_enabled', $configs['metrics_enabled']); + $container->setParameter('unleash.client.internal.custom_headers', $configs['custom_headers']); + $container->setParameter('unleash.client.internal.auto_registration', $configs['auto_registration']); + $container->setParameter('unleash.client.internal.user_id_field', $configs['context']['user_id_field']); + $container->setParameter('unleash.client.internal.custom_properties', $configs['context']['custom_properties']); + $container->setParameter('unleash.client.internal.twig_functions_enabled', $configs['twig']['functions']); + $container->setParameter('unleash.client.internal.twig_filters_enabled', $configs['twig']['filters']); + $container->setParameter('unleash.client.internal.twig_tests_enabled', $configs['twig']['tests']); + $container->setParameter('unleash.client.internal.twig_tags_enabled', $configs['twig']['tags']); + $container->setParameter('unleash.client.internal.disabled_strategies', $configs['disabled_strategies']); + $container->setParameter('unleash.client.internal.bootstrap', $configs['bootstrap']); + $container->setParameter('unleash.client.internal.fetching_enabled', $configs['fetching_enabled']); + $container->setParameter('unleash.client.internal.stale_ttl', $configs['stale_ttl']); + + if (class_exists(ExpressionLanguage::class)) { + $definition = new Definition(ExpressionLanguage::class); + $container->setDefinition('unleash.client.internal.expression_language', $definition); + } + } + + /** + * @param array $config + * + * @throws ReflectionException + */ + public function getConfiguration(array $config, ContainerBuilder $container): Configuration + { + $loader = new YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); + $loader->load('services.yaml'); + + $handlerNames = []; + foreach ($this->getDefaultStrategyHandlers($container) as $defaultStrategyHandler) { + $reflection = new ReflectionClass($defaultStrategyHandler); + $instance = $reflection->newInstanceWithoutConstructor(); + assert($instance instanceof StrategyHandler); + $handlerNames[] = $instance->getStrategyName(); + } + + return new Configuration($handlerNames); + } + + /** + * @return array + */ + private function getDefaultStrategyHandlers(ContainerBuilder $container): array + { + $result = []; + foreach ($container->findTaggedServiceIds('unleash.client.built_in_strategy_handler') as $handler => $tags) { + $definition = $container->getDefinition($handler); + $class = $definition->getClass(); + assert(is_string($class)); + $result[$handler] = $class; + } + + return $result; + } +} diff --git a/src/DependencyInjection/UnleashSymfonyClientExtension.php b/src/DependencyInjection/UnleashSymfonyClientExtension.php index 19e92aa..9a23731 100644 --- a/src/DependencyInjection/UnleashSymfonyClientExtension.php +++ b/src/DependencyInjection/UnleashSymfonyClientExtension.php @@ -1,103 +1,3 @@ $configs - * - * @throws Exception - */ - public function load(array $configs, ContainerBuilder $container): void - { - $loader = new YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); - $loader->load('services.yaml'); - $loader->load('autowiring.yaml'); - if (interface_exists(ExtensionInterface::class)) { - $loader->load('twig.yaml'); - } - - $configs = $this->processConfiguration($this->getConfiguration([], $container), $configs); - $container->setParameter('unleash.client.internal.service_configs', [ - 'http_client_service' => $configs['http_client_service'], - 'request_factory_service' => $configs['request_factory_service'], - 'cache_service' => $configs['cache_service'], - ]); - $container->setParameter('unleash.client.internal.app_url', $configs['app_url'] ?? ''); - $container->setParameter('unleash.client.internal.instance_id', $configs['instance_id'] ?? ''); - $container->setParameter('unleash.client.internal.app_name', $configs['app_name'] ?? ''); - $container->setParameter('unleash.client.internal.cache_ttl', $configs['cache_ttl']); - $container->setParameter('unleash.client.internal.metrics_send_interval', $configs['metrics_send_interval']); - $container->setParameter('unleash.client.internal.metrics_enabled', $configs['metrics_enabled']); - $container->setParameter('unleash.client.internal.custom_headers', $configs['custom_headers']); - $container->setParameter('unleash.client.internal.auto_registration', $configs['auto_registration']); - $container->setParameter('unleash.client.internal.user_id_field', $configs['context']['user_id_field']); - $container->setParameter('unleash.client.internal.custom_properties', $configs['context']['custom_properties']); - $container->setParameter('unleash.client.internal.twig_functions_enabled', $configs['twig']['functions']); - $container->setParameter('unleash.client.internal.twig_filters_enabled', $configs['twig']['filters']); - $container->setParameter('unleash.client.internal.twig_tests_enabled', $configs['twig']['tests']); - $container->setParameter('unleash.client.internal.twig_tags_enabled', $configs['twig']['tags']); - $container->setParameter('unleash.client.internal.disabled_strategies', $configs['disabled_strategies']); - $container->setParameter('unleash.client.internal.bootstrap', $configs['bootstrap']); - $container->setParameter('unleash.client.internal.fetching_enabled', $configs['fetching_enabled']); - $container->setParameter('unleash.client.internal.stale_ttl', $configs['stale_ttl']); - - if (class_exists(ExpressionLanguage::class)) { - $definition = new Definition(ExpressionLanguage::class); - $container->setDefinition('unleash.client.internal.expression_language', $definition); - } - } - - /** - * @param array $config - * - * @throws ReflectionException - */ - public function getConfiguration(array $config, ContainerBuilder $container): Configuration - { - $loader = new YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); - $loader->load('services.yaml'); - - $handlerNames = []; - foreach ($this->getDefaultStrategyHandlers($container) as $defaultStrategyHandler) { - $reflection = new ReflectionClass($defaultStrategyHandler); - $instance = $reflection->newInstanceWithoutConstructor(); - assert($instance instanceof StrategyHandler); - $handlerNames[] = $instance->getStrategyName(); - } - - return new Configuration($handlerNames); - } - - /** - * @return array - */ - private function getDefaultStrategyHandlers(ContainerBuilder $container): array - { - $result = []; - foreach ($container->findTaggedServiceIds('unleash.client.built_in_strategy_handler') as $handler => $tags) { - $definition = $container->getDefinition($handler); - $class = $definition->getClass(); - assert(is_string($class)); - $result[$handler] = $class; - } - - return $result; - } -} +class_alias('\Unleash\Client\Bundle\DependencyInjection\UnleashClientExtension', '\Unleash\Client\Bundle\DependencyInjection\UnleashSymfonyClientExtension'); diff --git a/src/UnleashClientBundle.php b/src/UnleashClientBundle.php new file mode 100644 index 0000000..0707a6e --- /dev/null +++ b/src/UnleashClientBundle.php @@ -0,0 +1,34 @@ +registerForAutoconfiguration(StrategyHandler::class) + ->addTag('unleash.client.strategy_handler'); + $container->registerForAutoconfiguration(BootstrapProvider::class) + ->addTag('unleash.client.bootstrap_provider'); + + $container->addCompilerPass( + new HttpServicesResolverCompilerPass(), + PassConfig::TYPE_BEFORE_OPTIMIZATION, + -100_000 + ); + $container->addCompilerPass( + new CacheServiceResolverCompilerPass(), + PassConfig::TYPE_OPTIMIZE + ); + $container->addCompilerPass(new BootstrapResolver()); + } +} diff --git a/src/UnleashSymfonyClientBundle.php b/src/UnleashSymfonyClientBundle.php index 0279e05..5c72219 100644 --- a/src/UnleashSymfonyClientBundle.php +++ b/src/UnleashSymfonyClientBundle.php @@ -1,34 +1,3 @@ registerForAutoconfiguration(StrategyHandler::class) - ->addTag('unleash.client.strategy_handler'); - $container->registerForAutoconfiguration(BootstrapProvider::class) - ->addTag('unleash.client.bootstrap_provider'); - - $container->addCompilerPass( - new HttpServicesResolverCompilerPass(), - PassConfig::TYPE_BEFORE_OPTIMIZATION, - -100_000 - ); - $container->addCompilerPass( - new CacheServiceResolverCompilerPass(), - PassConfig::TYPE_OPTIMIZE - ); - $container->addCompilerPass(new BootstrapResolver()); - } -} +class_alias('\Unleash\Client\Bundle\UnleashClientBundle', '\Unleash\Client\Bundle\UnleashSymfonyClientBundle');