Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
26 / 26
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
1 / 1
Type
100.00% covered (success)
100.00%
26 / 26
100.00% covered (success)
100.00%
1 / 1
13
100.00% covered (success)
100.00%
1 / 1
 validate
100.00% covered (success)
100.00%
26 / 26
100.00% covered (success)
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
9namespace Selen\Data;
10
11class 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}