-
Notifications
You must be signed in to change notification settings - Fork 15
Expand file tree
/
Copy pathLocalhostSplitManager.php
More file actions
103 lines (90 loc) · 3.15 KB
/
LocalhostSplitManager.php
File metadata and controls
103 lines (90 loc) · 3.15 KB
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<?php
namespace SplitIO\Sdk\Manager;
use \stdClass;
use SplitIO\Sdk\Validator\InputValidator;
class LocalhostSplitManager implements SplitManagerInterface
{
private $splits;
public function __construct(array $splits)
{
$splitDefinitions = array();
if ($splits) {
foreach (array_keys($splits) as $concatenated) {
$splitted = explode(":", $concatenated);
$featureFlagName = $splitted[0];
$split = $splits[$concatenated];
if (isset($splitDefinitions[$featureFlagName])) {
array_push(
$splitDefinitions[$featureFlagName]["treatments"],
$split["treatment"]
);
$splitDefinitions[$featureFlagName]["treatments"] = array_unique(
$splitDefinitions[$featureFlagName]["treatments"]
);
if (isset($split["config"])) {
$splitDefinitions[$featureFlagName]["config"][ $split["treatment"]] = $split["config"];
}
} else {
$splitDefinitions[$featureFlagName] = array(
"treatments" => array($split["treatment"]),
);
if (isset($split["config"])) {
$splitDefinitions[$featureFlagName]["config"] = array($split["treatment"] => $split["config"]);
}
}
}
}
$this->splits = $splitDefinitions;
}
public function splitNames()
{
$_splits = array();
if ($this->splits) {
return array_keys($this->splits);
}
return $_splits;
}
public function splits()
{
$_splits = array();
if ($this->splits) {
foreach (array_keys($this->splits) as $featureFlagName) {
$configs = isset($this->splits[$featureFlagName]["config"]) ?
$this->splits[$featureFlagName]["config"] : new StdClass;
$_splits[] = new SplitView(
$featureFlagName,
null,
false,
$this->splits[$featureFlagName]["treatments"],
0,
$configs,
null,
array()
);
}
}
return $_splits;
}
public function split($featureFlagName)
{
$featureFlagName = InputValidator::validateFeatureFlagName($featureFlagName, 'split');
if (is_null($featureFlagName)) {
return null;
}
if (isset($this->splits[$featureFlagName])) {
$configs = isset($this->splits[$featureFlagName]["config"]) ?
$this->splits[$featureFlagName]["config"] : new StdClass;
return new SplitView(
$featureFlagName,
null,
false,
$this->splits[$featureFlagName]["treatments"],
0,
$configs,
null,
array()
);
}
return null;
}
}