14
14
* @copyright 2019 Marc Bennewitz
15
15
* @license http://github.com/marc-mabe/php-enum/blob/master/LICENSE.txt New BSD License
16
16
* @link http://github.com/marc-mabe/php-enum for the canonical source repository
17
+ *
18
+ * @psalm-immutable
17
19
*/
18
20
abstract class Enum
19
21
{
@@ -87,6 +89,8 @@ final private function __clone()
87
89
/**
88
90
* @throws LogicException Enums are not serializable
89
91
* because instances are implemented as singletons
92
+ *
93
+ * @psalm-return never-return
90
94
*/
91
95
final public function __sleep ()
92
96
{
@@ -96,6 +100,8 @@ final public function __sleep()
96
100
/**
97
101
* @throws LogicException Enums are not serializable
98
102
* because instances are implemented as singletons
103
+ *
104
+ * @psalm-return never-return
99
105
*/
100
106
final public function __wakeup ()
101
107
{
@@ -116,6 +122,8 @@ final public function getValue()
116
122
* Get the name of the enumerator
117
123
*
118
124
* @return string
125
+ *
126
+ * @psalm-return non-empty-string
119
127
*/
120
128
final public function getName ()
121
129
{
@@ -170,6 +178,8 @@ final public function is($enumerator)
170
178
* @return static
171
179
* @throws InvalidArgumentException On an unknown or invalid value
172
180
* @throws LogicException On ambiguous constant values
181
+ *
182
+ * @psalm-pure
173
183
*/
174
184
final public static function get ($ enumerator )
175
185
{
@@ -187,6 +197,8 @@ final public static function get($enumerator)
187
197
* @return static
188
198
* @throws InvalidArgumentException On an unknown or invalid value
189
199
* @throws LogicException On ambiguous constant values
200
+ *
201
+ * @psalm-pure
190
202
*/
191
203
final public static function byValue ($ value )
192
204
{
@@ -214,6 +226,8 @@ final public static function byValue($value)
214
226
* @return static
215
227
* @throws InvalidArgumentException On an invalid or unknown name
216
228
* @throws LogicException On ambiguous values
229
+ *
230
+ * @psalm-pure
217
231
*/
218
232
final public static function byName (string $ name )
219
233
{
@@ -241,6 +255,8 @@ final public static function byName(string $name)
241
255
* @return static
242
256
* @throws InvalidArgumentException On an invalid ordinal number
243
257
* @throws LogicException On ambiguous values
258
+ *
259
+ * @psalm-pure
244
260
*/
245
261
final public static function byOrdinal (int $ ordinal )
246
262
{
@@ -263,6 +279,9 @@ final public static function byOrdinal(int $ordinal)
263
279
* Get a list of enumerator instances ordered by ordinal number
264
280
*
265
281
* @return static[]
282
+ *
283
+ * @psalm-return list<static>
284
+ * @psalm-pure
266
285
*/
267
286
final public static function getEnumerators ()
268
287
{
@@ -276,6 +295,9 @@ final public static function getEnumerators()
276
295
* Get a list of enumerator values ordered by ordinal number
277
296
*
278
297
* @return mixed[]
298
+ *
299
+ * @psalm-return list<null|bool|int|float|string|array>
300
+ * @psalm-pure
279
301
*/
280
302
final public static function getValues ()
281
303
{
@@ -286,6 +308,9 @@ final public static function getValues()
286
308
* Get a list of enumerator names ordered by ordinal number
287
309
*
288
310
* @return string[]
311
+ *
312
+ * @psalm-return list<non-empty-string>
313
+ * @psalm-pure
289
314
*/
290
315
final public static function getNames ()
291
316
{
@@ -294,11 +319,14 @@ final public static function getNames()
294
319
}
295
320
return self ::$ names [static ::class];
296
321
}
297
-
322
+
298
323
/**
299
324
* Get a list of enumerator ordinal numbers
300
325
*
301
326
* @return int[]
327
+ *
328
+ * @psalm-return list<int>
329
+ * @psalm-pure
302
330
*/
303
331
final public static function getOrdinals ()
304
332
{
@@ -309,8 +337,11 @@ final public static function getOrdinals()
309
337
/**
310
338
* Get all available constants of the called class
311
339
*
312
- * @return array
340
+ * @return mixed[]
313
341
* @throws LogicException On ambiguous constant values
342
+ *
343
+ * @psalm-return array<non-empty-string, null|bool|int|float|string|array>
344
+ * @psalm-pure
314
345
*/
315
346
final public static function getConstants ()
316
347
{
@@ -361,9 +392,11 @@ private static function noAmbiguousValues($constants)
361
392
362
393
/**
363
394
* Test if the given enumerator is part of this enumeration
364
- *
395
+ *
365
396
* @param static|null|bool|int|float|string|array $enumerator
366
397
* @return bool
398
+ *
399
+ * @psalm-pure
367
400
*/
368
401
final public static function has ($ enumerator )
369
402
{
@@ -376,6 +409,8 @@ final public static function has($enumerator)
376
409
*
377
410
* @param null|bool|int|float|string|array $value
378
411
* @return bool
412
+ *
413
+ * @psalm-pure
379
414
*/
380
415
final public static function hasValue ($ value )
381
416
{
@@ -387,6 +422,8 @@ final public static function hasValue($value)
387
422
*
388
423
* @param string $name
389
424
* @return bool
425
+ *
426
+ * @psalm-pure
390
427
*/
391
428
final public static function hasName (string $ name )
392
429
{
@@ -404,6 +441,8 @@ final public static function hasName(string $name)
404
441
* @return static
405
442
* @throws InvalidArgumentException On an invalid or unknown name
406
443
* @throws LogicException On ambiguous constant values
444
+ *
445
+ * @psalm-pure
407
446
*/
408
447
final public static function __callStatic (string $ method , array $ args )
409
448
{
0 commit comments