1 | <?php |
||
8 | abstract class Feature |
||
9 | { |
||
10 | const ENABLED = 'enabled'; |
||
11 | const DISABLED = 'disabled'; |
||
12 | |||
13 | private static $resolver; |
||
14 | protected $caller; |
||
15 | protected static $forceState; |
||
16 | |||
17 | // Maybe it's worth requiring an interface be applied? |
||
18 | 46 | public function __construct($caller) |
|
22 | |||
23 | 16 | public static function new($caller): Feature |
|
27 | |||
28 | abstract public function toggles(): array; |
||
29 | |||
30 | 4 | public static function registerResolver($resolver): void |
|
34 | |||
35 | 36 | public function resolver(): Resolver |
|
43 | |||
44 | 10 | public function hasToggle(string $method): bool |
|
48 | |||
49 | 8 | protected function caller() |
|
53 | |||
54 | 34 | private function methodToCall(string $toggle): string |
|
65 | |||
66 | 34 | public function __call($name, $arguments) |
|
80 | |||
81 | 2 | public static function __callStatic($method, $arguments) |
|
91 | |||
92 | 4 | public static function alwaysOn() : void |
|
96 | |||
97 | 4 | public static function alwaysOff() : void |
|
101 | |||
102 | 32 | public function hasForcedState() : bool |
|
106 | |||
107 | 8 | public function isAlwaysOn() : bool |
|
111 | } |
||
112 |