/
Toggle.php
39 lines (29 loc) · 873 Bytes
/
Toggle.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
declare(strict_types=1);
namespace Pheature\Core\Toggle\Read;
final class Toggle
{
private const ZERO = 0;
private FeatureFinder $featureFinder;
public function __construct(FeatureFinder $featureRepository)
{
$this->featureFinder = $featureRepository;
}
public function isEnabled(string $featureId, ?ConsumerIdentity $identity = null): bool
{
$feature = $this->featureFinder->get($featureId);
if (false === $feature->isEnabled()) {
return false;
}
$strategies = $feature->strategies();
if (self::ZERO === $strategies->count() || null === $identity) {
return true;
}
foreach ($strategies as $strategy) {
if ($strategy->isSatisfiedBy($identity)) {
return true;
}
}
return false;
}
}