function ValidateEnvPlaceholdersPass::process
Overrides CompilerPassInterface::process
File
-
vendor/
symfony/ dependency-injection/ Compiler/ ValidateEnvPlaceholdersPass.php, line 33
Class
- ValidateEnvPlaceholdersPass
- Validates environment variable placeholders used in extension configuration with dummy values.
Namespace
Symfony\Component\DependencyInjection\CompilerCode
public function process(ContainerBuilder $container) : void {
$this->extensionConfig = [];
if (!class_exists(BaseNode::class) || !($extensions = $container->getExtensions())) {
return;
}
$resolvingBag = $container->getParameterBag();
if (!$resolvingBag instanceof EnvPlaceholderParameterBag) {
return;
}
$defaultBag = new ParameterBag($resolvingBag->all());
$envTypes = $resolvingBag->getProvidedTypes();
foreach ($resolvingBag->getEnvPlaceholders() + $resolvingBag->getUnusedEnvPlaceholders() as $env => $placeholders) {
$values = [];
if (false === ($i = strpos($env, ':'))) {
$default = $defaultBag->has("env({$env})") ? $defaultBag->get("env({$env})") : self::TYPE_FIXTURES['string'];
$defaultType = null !== $default ? get_debug_type($default) : 'string';
$values[$defaultType] = $default;
}
else {
$prefix = substr($env, 0, $i);
foreach ($envTypes[$prefix] ?? [
'string',
] as $type) {
$values[$type] = self::TYPE_FIXTURES[$type] ?? null;
}
}
foreach ($placeholders as $placeholder) {
BaseNode::setPlaceholder($placeholder, $values);
}
}
$processor = new Processor();
foreach ($extensions as $name => $extension) {
if (!($extension instanceof ConfigurationExtensionInterface || $extension instanceof ConfigurationInterface) || !($config = array_filter($container->getExtensionConfig($name)))) {
// this extension has no semantic configuration or was not called
continue;
}
$config = $resolvingBag->resolveValue($config);
if ($extension instanceof ConfigurationInterface) {
$configuration = $extension;
}
elseif (null === ($configuration = $extension->getConfiguration($config, $container))) {
continue;
}
$this->extensionConfig[$name] = $processor->processConfiguration($configuration, $config);
}
$resolvingBag->clearUnusedEnvPlaceholders();
}