PluginProbe
User Access Manager / 2.3.20
User Access Manager v2.3.20
2.3.20 2.3.19 2.3.18 2.3.17 2.3.16 2.3.15 2.3.14 2.3.13 trunk 0.6 0.6.1 0.6.2 0.7 0.7 Beta 0.7.0.1 0.8 0.8.0.1 0.8.0.2 0.9 0.9.1 0.9.1.1 0.9.1.2 0.9.1.3 0.9.1.4 1.0 All 136 releases
user-access-manager / src / Config / Parameter / ConfigParameter.php

ConfigParameter.php in User Access Manager 2.3.20, at src/Config/Parameter/ConfigParameter.php

57 lines 1.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 declare(strict_types=1);
4
5 namespace UserAccessManager\Config\Parameter;
6
7 use Exception;
8 use UserAccessManager\Config\Config;
9
10 abstract class ConfigParameter implements ConfigParameterInterface
11 {
12 protected mixed $defaultValue = null;
13 protected mixed $value = null;
14
15 /**
16 * @throws Exception
17 */
18 public function __construct(
19 protected string $id,
20 mixed $defaultValue = null
21 ) {
22 $this->validateValue($defaultValue);
23 $this->defaultValue = $defaultValue;
24 }
25
26 public function getId(): string
27 {
28 return $this->id;
29 }
30
31 /**
32 * @throws Exception
33 */
34 protected function validateValue(mixed $value): void
35 {
36 if ($this->isValidValue($value) === false) {
37 throw new Exception("Wrong value '$value' type given for '$this->id'.'");
38 }
39 }
40
41 /**
42 * Deliberately stores the value unvalidated. Config replays every persisted option through here,
43 * and a selection's valid set is environment-dependent (active_cache_provider only lists Redis
44 * while the object cache drop-in is present). Rejecting an unrecognised value would make the next
45 * settings save write the default over it, because setConfigParameters() persists every parameter.
46 */
47 public function setValue(mixed $value): void
48 {
49 $this->value = $value;
50 }
51
52 public function getValue(): mixed
53 {
54 return ($this->value === null) ? $this->defaultValue : $this->value;
55 }
56 }
57