<?php
namespace Symfony\Component\DependencyInjection\Compiler;
use Symfony\Component\DependencyInjection\Definition;
class ResolveEnvPlaceholdersPass extends AbstractRecursivePass
{
protected bool $skipScalars = false;
public function __construct(
private string|bool|null $format = true,
) {
}
protected function processValue(mixed $value, bool $isRoot = false): mixed
{
if (\is_string($value)) {
return $this->container->resolveEnvPlaceholders($value, $this->format);
}
if ($value instanceof Definition) {
$changes = $value->getChanges();
if (isset($changes['class'])) {
$value->setClass($this->container->resolveEnvPlaceholders($value->getClass(), $this->format));
}
if (isset($changes['file'])) {
$value->setFile($this->container->resolveEnvPlaceholders($value->getFile(), $this->format));
}
}
$value = parent::processValue($value, $isRoot);
if ($value && \is_array($value) && !$isRoot) {
$value = array_combine($this->container->resolveEnvPlaceholders(array_keys($value), $this->format), $value);
}
return $value;
}
}