From 1d008f76da3d510a1f6bf7f48a01fb9c18b226aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Vasseur?= Date: Mon, 12 Apr 2021 11:09:21 +0200 Subject: [PATCH] Allow calling custom processors directly on EnvConfigurator Add magic __call method to EnvConfigurator to allow calling custom processors as methods instead of using the custom method. --- .../Loader/Configurator/EnvConfigurator.php | 12 ++++++++++++ .../Loader/Configurator/EnvConfiguratorTest.php | 1 + 2 files changed, 13 insertions(+) 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')]; } }