From 56545fd270fc3f6edc930857184c1049c8f66215 Mon Sep 17 00:00:00 2001 From: Beno!t POLASZEK Date: Fri, 12 Feb 2021 19:12:09 +0100 Subject: [PATCH] [DependencyInjection] Negated (not:) env var processor --- .../Component/DependencyInjection/CHANGELOG.md | 1 + .../DependencyInjection/EnvVarProcessor.php | 7 +++++-- .../RegisterEnvVarProcessorsPassTest.php | 1 + .../Tests/EnvVarProcessorTest.php | 16 ++++++++++++++++ 4 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/DependencyInjection/CHANGELOG.md b/src/Symfony/Component/DependencyInjection/CHANGELOG.md index 05681ad54e27d..4d517c4f1b006 100644 --- a/src/Symfony/Component/DependencyInjection/CHANGELOG.md +++ b/src/Symfony/Component/DependencyInjection/CHANGELOG.md @@ -5,6 +5,7 @@ CHANGELOG --- * Add `ServicesConfigurator::remove()` in the PHP-DSL + * added `%env(not:...)%` processor to negate boolean values 5.2.0 ----- diff --git a/src/Symfony/Component/DependencyInjection/EnvVarProcessor.php b/src/Symfony/Component/DependencyInjection/EnvVarProcessor.php index a85fc64b04f8d..efa0c526cd4e9 100644 --- a/src/Symfony/Component/DependencyInjection/EnvVarProcessor.php +++ b/src/Symfony/Component/DependencyInjection/EnvVarProcessor.php @@ -41,6 +41,7 @@ public static function getProvidedTypes() return [ 'base64' => 'string', 'bool' => 'bool', + 'not' => 'bool', 'const' => 'bool|int|float|string|array', 'csv' => 'array', 'file' => 'string', @@ -191,8 +192,10 @@ public function getEnv(string $prefix, string $name, \Closure $getEnv) return (string) $env; } - if ('bool' === $prefix) { - return (bool) (filter_var($env, \FILTER_VALIDATE_BOOLEAN) ?: filter_var($env, \FILTER_VALIDATE_INT) ?: filter_var($env, \FILTER_VALIDATE_FLOAT)); + if (in_array($prefix, ['bool', 'not'], true)) { + $env = (bool) (filter_var($env, \FILTER_VALIDATE_BOOLEAN) ?: filter_var($env, \FILTER_VALIDATE_INT) ?: filter_var($env, \FILTER_VALIDATE_FLOAT)); + + return 'not' === $prefix ? !$env : $env; } if ('int' === $prefix) { diff --git a/src/Symfony/Component/DependencyInjection/Tests/Compiler/RegisterEnvVarProcessorsPassTest.php b/src/Symfony/Component/DependencyInjection/Tests/Compiler/RegisterEnvVarProcessorsPassTest.php index 86c270ebcc521..4c09243a40a84 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/Compiler/RegisterEnvVarProcessorsPassTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/Compiler/RegisterEnvVarProcessorsPassTest.php @@ -33,6 +33,7 @@ public function testSimpleProcessor() 'foo' => ['string'], 'base64' => ['string'], 'bool' => ['bool'], + 'not' => ['bool'], 'const' => ['bool', 'int', 'float', 'string', 'array'], 'csv' => ['array'], 'file' => ['string'], diff --git a/src/Symfony/Component/DependencyInjection/Tests/EnvVarProcessorTest.php b/src/Symfony/Component/DependencyInjection/Tests/EnvVarProcessorTest.php index ab5f24b2ecba2..6a2460c9f296b 100644 --- a/src/Symfony/Component/DependencyInjection/Tests/EnvVarProcessorTest.php +++ b/src/Symfony/Component/DependencyInjection/Tests/EnvVarProcessorTest.php @@ -64,6 +64,22 @@ public function testGetEnvBool($value, $processed) $this->assertSame($processed, $result); } + /** + * @dataProvider validBools + */ + public function testGetEnvNot($value, $processed) + { + $processor = new EnvVarProcessor(new Container()); + + $result = $processor->getEnv('not', 'foo', function ($name) use ($value) { + $this->assertSame('foo', $name); + + return $value; + }); + + $this->assertSame(!$processed, $result); + } + public function validBools() { return [ pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy