Skip to content

Commit 3babe97

Browse files
[String] add LazyString to provide generic stringable objects
1 parent 491c122 commit 3babe97

File tree

3 files changed

+26
-1
lines changed

3 files changed

+26
-1
lines changed

DependencyInjection/FrameworkExtension.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@
112112
use Symfony\Component\Serializer\Normalizer\DenormalizerInterface;
113113
use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
114114
use Symfony\Component\Stopwatch\Stopwatch;
115+
use Symfony\Component\String\LazyString;
115116
use Symfony\Component\String\Slugger\SluggerInterface;
116117
use Symfony\Component\Translation\Command\XliffLintCommand as BaseXliffLintCommand;
117118
use Symfony\Component\Translation\Translator;
@@ -1390,9 +1391,15 @@ private function registerSecretsConfiguration(array $config, ContainerBuilder $c
13901391
throw new InvalidArgumentException(sprintf('Invalid value "%s" set as "decryption_env_var": only "word" characters are allowed.', $config['decryption_env_var']));
13911392
}
13921393

1393-
$container->getDefinition('secrets.vault')->replaceArgument(1, "%env({$config['decryption_env_var']})%");
1394+
if (class_exists(LazyString::class)) {
1395+
$container->getDefinition('secrets.decryption_key')->replaceArgument(1, $config['decryption_env_var']);
1396+
} else {
1397+
$container->getDefinition('secrets.vault')->replaceArgument(1, "%env({$config['decryption_env_var']})%");
1398+
$container->removeDefinition('secrets.decryption_key');
1399+
}
13941400
} else {
13951401
$container->getDefinition('secrets.vault')->replaceArgument(1, null);
1402+
$container->removeDefinition('secrets.decryption_key');
13961403
}
13971404
}
13981405

Resources/config/secrets.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@
88
<service id="secrets.vault" class="Symfony\Bundle\FrameworkBundle\Secrets\SodiumVault">
99
<tag name="container.env_var_loader" />
1010
<argument />
11+
<argument type="service" id="secrets.decryption_key" on-invalid="ignore" />
12+
</service>
13+
14+
<service id="secrets.decryption_key" parent="getenv">
1115
<argument />
1216
</service>
1317

Resources/config/services.xml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,5 +129,19 @@
129129
<tag name="kernel.locale_aware" />
130130
</service>
131131
<service id="Symfony\Component\String\Slugger\SluggerInterface" alias="slugger" />
132+
133+
<!-- inherit from this service to lazily access env vars -->
134+
<service id="getenv" class="Symfony\Component\String\LazyString" abstract="true">
135+
<factory class="Symfony\Component\String\LazyString" method="fromCallable" />
136+
<argument type="service">
137+
<service class="Closure">
138+
<factory class="Closure" method="fromCallable" />
139+
<argument type="collection">
140+
<argument type="service" id="service_container" />
141+
<argument>getEnv</argument>
142+
</argument>
143+
</service>
144+
</argument>
145+
</service>
132146
</services>
133147
</container>

0 commit comments

Comments
 (0)