Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
1 / 1
Types
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
1 / 1
3
100.00% covered (success)
100.00%
1 / 1
 validate
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
1 / 1
3
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 Types
12{
13    /**
14     * 値の型を検証します
15     *
16     * @param mixed  $data      検証する値を指定します
17     * @param string $typeNames 型名を指定します
18     */
19    public static function validate($data, string ...$typeNames): bool
20    {
21        $isDuplicateTypeName = count(\array_unique($typeNames)) < count($typeNames);
22
23        if ($isDuplicateTypeName) {
24            throw new \InvalidArgumentException('Duplicate type specification.');
25        }
26
27        $results = [];
28
29        foreach ($typeNames as $typeName) {
30            $results[] = Type::validate($data, $typeName);
31        }
32        return \in_array(true, $results, true);
33    }
34}