PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.33.1
GiveWP – Donation Plugin and Fundraising Platform v2.33.1
4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / Log / ValueObjects / Enum.php
give / src / Log / ValueObjects Last commit date
Enum.php 3 years ago EnumInterface.php 4 years ago LogCategory.php 4 years ago LogType.php 4 years ago
Enum.php
115 lines
1 <?php
2
3 namespace Give\Log\ValueObjects;
4
5 use Give\Framework\Exceptions\Primitives\InvalidArgumentException;
6 use ReflectionClass;
7 use ReflectionException;
8
9 /**
10 * Class ValueObject
11 * @package Give\Log\ValueObjects
12 *
13 * @since 2.10.0
14 */
15 abstract class Enum implements EnumInterface
16 {
17 /**
18 * @var mixed
19 */
20 protected $value;
21
22 /**
23 * ValueObject constructor.
24 *
25 * @param mixed $value
26 */
27 final public function __construct($value)
28 {
29 if ($value instanceof static) {
30 $value = $value->getValue();
31 }
32
33 if ( ! self::isValid($value)) {
34 throw new InvalidArgumentException(
35 sprintf('Invalid %s enumeration value provided %s', static::class, $value)
36 );
37 }
38
39 $this->value = strtoupper($value);
40 }
41
42 /**
43 * Get an array of defined constants
44 *
45 * @return array
46 */
47 public static function getAll()
48 {
49 static $constants = [];
50
51 if ( ! isset($constants[static::class])) {
52 try {
53 $reflection = new ReflectionClass(static::class);
54 $constants[static::class] = $reflection->getConstants();
55 } catch (ReflectionException $exception) {
56 return [];
57 }
58 }
59
60 return $constants[static::class];
61 }
62
63 /**
64 * @inheritDoc
65 */
66 public function getValue()
67 {
68 $constants = self::getAll();
69
70 if (isset($constants[$this->value])) {
71 return $constants[$this->value];
72 }
73
74 return null;
75 }
76
77 /**
78 * Check if value is valid
79 *
80 * @param string $value
81 *
82 * @return bool
83 */
84 public static function isValid($value)
85 {
86 return array_key_exists(
87 strtoupper($value),
88 self::getAll()
89 );
90 }
91
92 /**
93 * @inheritDoc
94 */
95 public function equalsTo($value)
96 {
97 return $value instanceof self && $this->getValue() === $value->getValue();
98 }
99
100 /**
101 * @param string $name
102 * @param array $args
103 *
104 * @return static
105 */
106 public static function __callStatic($name, $args)
107 {
108 if (self::isValid($name)) {
109 return new static($name);
110 }
111
112 throw new InvalidArgumentException("Invalid argument, does not match constant {$name}");
113 }
114 }
115