/** * @param array $configs * @param ContainerBuilder $container */ public function load(array $configs, ContainerBuilder $container) { $configuration = new Configuration(); $config = $this->processConfiguration($configuration, $configs); $loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); $loader->load('services.xml'); if (Kernel::VERSION < 2.6) { $loader->load('service_factory_2.3.xml'); } else { $loader->load('service_factory_3.xml'); } // Base config $baseConfig = []; foreach ($this->configKeys as $configKey) { if ($configKey === 'version') { continue 1; } $baseConfig[$configKey] = array_key_exists($configKey, $config) && $config[$configKey] ? $config[$configKey] : null; $container->setParameter(self::SERVICE_NAMESPACE . '.' . $configKey, $config[$configKey]); } foreach (ServicesFactory::$AVAILABLE_SERVICES as $service) { $serviceKey = ServicesHelper::camelcaseToUnderscore($service); if (array_key_exists($serviceKey, $config['services'])) { foreach ($this->configKeys as $configKey) { if (!array_key_exists($configKey, $config['services'][$serviceKey]) && array_key_exists($configKey, $baseConfig) && $baseConfig[$configKey]) { $config['services'][$serviceKey][$configKey] = $baseConfig[$configKey]; } } } else { $config['services'][$serviceKey] = array_merge($baseConfig, ['version' => 'latest']); } $container->setParameter(self::SERVICE_NAMESPACE . '.' . $serviceKey, $config['services'][$serviceKey]); } }
/** * @param null|string $service * * @return array */ public function getParameters($service = null) { $serviceKey = ServicesHelper::camelcaseToUnderscore($service); return $service ? $this->parameters[$serviceKey] : array_intersect_key($this->parameters, array_flip(['key', 'secret', 'region'])); }