Completed
Push — master ( 522150...4db7bf )
by
unknown
14s queued 12s
created

QiniuEnum::assertValidValueReturningKey()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 7
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 3
c 1
b 0
f 0
nc 2
nop 1
dl 0
loc 7
rs 10
1
<?php
2
3
namespace Qiniu\Enum;
4
5
use MyCLabs\Enum\Enum;
6
7
/**
8
 * 扩展 MyCLabs\Enum\Enum 以使用其新版本的 from 方法
9
 *
10
 * @link https://github.com/myclabs/php-enum
11
 */
12
abstract class QiniuEnum extends Enum
13
{
14
    /**
15
     * @param mixed $value
16
     * @return static
17
     */
18
    public static function from($value)
19
    {
20
        $key = self::assertValidValueReturningKey($value);
21
22
        return self::__callStatic($key, array());
23
    }
24
25
    /**
26
     * Asserts valid enum value
27
     *
28
     * @psalm-pure
29
     * @psalm-assert T $value
30
     * @param mixed $value
31
     * @return string
32
     */
33
    private static function assertValidValueReturningKey($value)
34
    {
35
        if (false === ($key = self::search($value))) {
36
            throw new \UnexpectedValueException("Value '$value' is not part of the enum " . __CLASS__);
37
        }
38
39
        return $key;
40
    }
41
}
42