diff --git a/src/Symfony/Component/DependencyInjection/Loader/Configurator/EnvConfigurator.php b/src/Symfony/Component/DependencyInjection/Loader/Configurator/EnvConfigurator.php index c41b281445..21d9b84df1 100644 --- a/src/Symfony/Component/DependencyInjection/Loader/Configurator/EnvConfigurator.php +++ b/src/Symfony/Component/DependencyInjection/Loader/Configurator/EnvConfigurator.php @@ -31,6 +31,18 @@ class EnvConfigurator return '%env('.implode(':', $this->stack).')%'; } + /** + * @return $this + */ + public function __call(string $name, array $arguments): self + { + $processor = strtolower(preg_replace(['/([A-Z]+)([A-Z][a-z])/', '/([a-z\d])([A-Z])/'], '\1_\2', $name)); + + $this->custom($processor, ...$arguments); + + return $this; + } + /** * @return $this */ diff --git a/src/Symfony/Component/DependencyInjection/Tests/Loader/Configurator/EnvConfiguratorTest.php b/src/Symfony/Component/DependencyInjection/Tests/Loader/Configurator/EnvConfiguratorTest.php index d866752798..0b354e7615 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Loader/Configurator/EnvConfiguratorTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Loader/Configurator/EnvConfiguratorTest.php @@ -31,5 +31,6 @@ final class EnvConfiguratorTest extends TestCase yield ['%env(string:FOO)%', (new EnvConfigurator('FOO'))->string()]; yield ['%env(key:path:url:FOO)%', (new EnvConfigurator('FOO'))->url()->key('path')]; yield ['%env(default:fallback:bar:arg1:FOO)%', (new EnvConfigurator('FOO'))->custom('bar', 'arg1')->default('fallback')]; + yield ['%env(my_processor:my_argument:FOO)%', (new EnvConfigurator('FOO'))->myProcessor('my_argument')]; } }