PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.13.3
GiveWP – Donation Plugin and Fundraising Platform v2.13.3
4.16.3 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 / vendor / myclabs / php-enum / src / Enum.php
give / vendor / myclabs / php-enum / src Last commit date
Enum.php 5 years ago
Enum.php
205 lines
1 <?php
2 /**
3 * @link http://github.com/myclabs/php-enum
4 * @license http://www.opensource.org/licenses/mit-license.php MIT (see the LICENSE file)
5 */
6
7 namespace MyCLabs\Enum;
8
9 /**
10 * Base Enum class
11 *
12 * Create an enum by implementing this class and adding class constants.
13 *
14 * @author Matthieu Napoli <matthieu@mnapoli.fr>
15 * @author Daniel Costa <danielcosta@gmail.com>
16 * @author Mirosław Filip <mirfilip@gmail.com>
17 */
18 abstract class Enum implements \JsonSerializable
19 {
20 /**
21 * Enum value
22 *
23 * @var mixed
24 */
25 protected $value;
26
27 /**
28 * Store existing constants in a static cache per object.
29 *
30 * @var array
31 */
32 protected static $cache = [];
33
34 /**
35 * Creates a new value of some type
36 *
37 * @param mixed $value
38 *
39 * @throws \UnexpectedValueException if incompatible type is given.
40 */
41 public function __construct($value)
42 {
43 if ($value instanceof static) {
44 $this->value = $value->getValue();
45
46 return;
47 }
48
49 if (!$this->isValid($value)) {
50 throw new \UnexpectedValueException("Value '$value' is not part of the enum " . \get_called_class());
51 }
52
53 $this->value = $value;
54 }
55
56 /**
57 * @return mixed
58 */
59 public function getValue()
60 {
61 return $this->value;
62 }
63
64 /**
65 * Returns the enum key (i.e. the constant name).
66 *
67 * @return mixed
68 */
69 public function getKey()
70 {
71 return static::search($this->value);
72 }
73
74 /**
75 * @return string
76 */
77 public function __toString()
78 {
79 return (string)$this->value;
80 }
81
82 /**
83 * Compares one Enum with another.
84 *
85 * This method is final, for more information read https://github.com/myclabs/php-enum/issues/4
86 *
87 * @return bool True if Enums are equal, false if not equal
88 */
89 final public function equals(Enum $enum = null)
90 {
91 return $enum !== null && $this->getValue() === $enum->getValue() && \get_called_class() === \get_class($enum);
92 }
93
94 /**
95 * Returns the names (keys) of all constants in the Enum class
96 *
97 * @return array
98 */
99 public static function keys()
100 {
101 return \array_keys(static::toArray());
102 }
103
104 /**
105 * Returns instances of the Enum class of all Enum constants
106 *
107 * @return static[] Constant name in key, Enum instance in value
108 */
109 public static function values()
110 {
111 $values = array();
112
113 foreach (static::toArray() as $key => $value) {
114 $values[$key] = new static($value);
115 }
116
117 return $values;
118 }
119
120 /**
121 * Returns all possible values as an array
122 *
123 * @return array Constant name in key, constant value in value
124 */
125 public static function toArray()
126 {
127 $class = \get_called_class();
128 if (!isset(static::$cache[$class])) {
129 $reflection = new \ReflectionClass($class);
130 static::$cache[$class] = $reflection->getConstants();
131 }
132
133 return static::$cache[$class];
134 }
135
136 /**
137 * Check if is valid enum value
138 *
139 * @param $value
140 *
141 * @return bool
142 */
143 public static function isValid($value)
144 {
145 return \in_array($value, static::toArray(), true);
146 }
147
148 /**
149 * Check if is valid enum key
150 *
151 * @param $key
152 *
153 * @return bool
154 */
155 public static function isValidKey($key)
156 {
157 $array = static::toArray();
158
159 return isset($array[$key]) || \array_key_exists($key, $array);
160 }
161
162 /**
163 * Return key for value
164 *
165 * @param $value
166 *
167 * @return mixed
168 */
169 public static function search($value)
170 {
171 return \array_search($value, static::toArray(), true);
172 }
173
174 /**
175 * Returns a value when called statically like so: MyEnum::SOME_VALUE() given SOME_VALUE is a class constant
176 *
177 * @param string $name
178 * @param array $arguments
179 *
180 * @return static
181 * @throws \BadMethodCallException
182 */
183 public static function __callStatic($name, $arguments)
184 {
185 $array = static::toArray();
186 if (isset($array[$name]) || \array_key_exists($name, $array)) {
187 return new static($array[$name]);
188 }
189
190 throw new \BadMethodCallException("No static method or enum constant '$name' in class " . \get_called_class());
191 }
192
193 /**
194 * Specify data which should be serialized to JSON. This method returns data that can be serialized by json_encode()
195 * natively.
196 *
197 * @return mixed
198 * @link http://php.net/manual/en/jsonserializable.jsonserialize.php
199 */
200 public function jsonSerialize()
201 {
202 return $this->getValue();
203 }
204 }
205