Skip to content

Commit 802cd2c

Browse files
committed
add ResetInterface
1 parent 2f490f8 commit 802cd2c

File tree

3 files changed

+21
-2
lines changed

3 files changed

+21
-2
lines changed

src/Symfony/Component/FeatureFlag/FeatureChecker.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,12 @@
1212
namespace Symfony\Component\FeatureFlag;
1313

1414
use Symfony\Component\FeatureFlag\Provider\ProviderInterface;
15+
use Symfony\Contracts\Service\ResetInterface;
1516

1617
/**
1718
* @experimental
1819
*/
19-
final class FeatureChecker implements FeatureCheckerInterface
20+
final class FeatureChecker implements FeatureCheckerInterface, ResetInterface
2021
{
2122
private array $cache = [];
2223

@@ -40,4 +41,9 @@ public function getValue(string $featureName): mixed
4041

4142
return $this->cache[$featureName] = $feature();
4243
}
44+
45+
public function reset(): void
46+
{
47+
$this->cache = [];
48+
}
4349
}

src/Symfony/Component/FeatureFlag/Tests/FeatureCheckerTest.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
class FeatureCheckerTest extends TestCase
1919
{
2020
private FeatureChecker $featureChecker;
21+
private int $counter = 0;
2122

2223
protected function setUp(): void
2324
{
@@ -26,6 +27,7 @@ protected function setUp(): void
2627
'feature_false' => fn () => false,
2728
'feature_integer' => fn () => 42,
2829
'feature_random' => fn () => random_int(1, 42),
30+
'feature_counter' => fn () => ++$this->counter,
2931
]));
3032
}
3133

@@ -60,4 +62,14 @@ public static function provideIsEnabled(): iterable
6062
yield 'an integer' => ['feature_integer', false];
6163
yield 'an unknown feature' => ['unknown_feature', false];
6264
}
65+
66+
public function testReset()
67+
{
68+
$this->assertSame(1, $this->featureChecker->getValue('feature_counter'));
69+
$this->assertSame(1, $this->featureChecker->getValue('feature_counter'));
70+
71+
$this->featureChecker->reset();
72+
73+
$this->assertSame(2, $this->featureChecker->getValue('feature_counter'));
74+
}
6375
}

src/Symfony/Component/FeatureFlag/composer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@
1717
],
1818
"require": {
1919
"php": ">=8.2",
20-
"psr/container": "^1.1|^2.0"
20+
"psr/container": "^1.1|^2.0",
21+
"symfony/service-contracts": "^2.5|^3"
2122
},
2223
"require-dev": {
2324
"symfony/http-kernel": "^7.2",

0 commit comments

Comments
 (0)