Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
100.00% |
26 / 26 |
|
100.00% |
1 / 1 |
CRAP | |
100.00% |
1 / 1 |
Type | |
100.00% |
26 / 26 |
|
100.00% |
1 / 1 |
13 | |
100.00% |
1 / 1 |
validate | |
100.00% |
26 / 26 |
|
100.00% |
1 / 1 |
13 |
1 | <?php |
2 | |
3 | /** |
4 | * @license MIT |
5 | * @author hazuki3417<hazuki3417@gmail.com> |
6 | * @copyright 2021 hazuki3417 all rights reserved. |
7 | */ |
8 | |
9 | namespace Selen\Data; |
10 | |
11 | class Type |
12 | { |
13 | public const NAME_ARRAY = 'array'; |
14 | public const NAME_BOOL = 'bool'; |
15 | public const NAME_DOUBLE = 'double'; |
16 | public const NAME_FLOAT = 'float'; |
17 | public const NAME_INT = 'int'; |
18 | public const NAME_INTEGER = 'integer'; |
19 | public const NAME_LONG = 'long'; |
20 | public const NAME_NULL = 'null'; |
21 | public const NAME_NUMERIC = 'numeric'; |
22 | // const NAME_OBJECT = 'object'; |
23 | public const NAME_SCALAR = 'scalar'; |
24 | public const NAME_STRING = 'string'; |
25 | |
26 | /** |
27 | * 値の型を検証します |
28 | * |
29 | * @param mixed $data 検証する値を指定します |
30 | * @param string $typeName 型名を指定します |
31 | */ |
32 | public static function validate($data, string $typeName): bool |
33 | { |
34 | $status = false; |
35 | |
36 | switch ($typeName) { |
37 | case self::NAME_ARRAY: |
38 | $status = is_array($data); |
39 | |
40 | break; |
41 | case self::NAME_BOOL: |
42 | $status = is_bool($data); |
43 | |
44 | break; |
45 | case self::NAME_DOUBLE: |
46 | $status = is_double($data); |
47 | |
48 | break; |
49 | case self::NAME_FLOAT: |
50 | $status = is_float($data); |
51 | |
52 | break; |
53 | case self::NAME_INT: |
54 | $status = is_int($data); |
55 | |
56 | break; |
57 | case self::NAME_INTEGER: |
58 | $status = is_integer($data); |
59 | |
60 | break; |
61 | case self::NAME_LONG: |
62 | $status = is_long($data); |
63 | |
64 | break; |
65 | case self::NAME_NULL: |
66 | $status = is_null($data); |
67 | |
68 | break; |
69 | case self::NAME_NUMERIC: |
70 | $status = is_numeric($data); |
71 | |
72 | break; |
73 | // case self::NAME_OBJECT: |
74 | // $status = is_object($data); |
75 | // break; |
76 | case self::NAME_SCALAR: |
77 | $status = is_scalar($data); |
78 | |
79 | break; |
80 | case self::NAME_STRING: |
81 | $status = is_string($data); |
82 | |
83 | break; |
84 | default: |
85 | $status = $data instanceof $typeName; |
86 | |
87 | break; |
88 | } |
89 | |
90 | return $status; |
91 | } |
92 | } |