UniqueItems   A
last analyzed

Complexity

Total Complexity 10

Size/Duplication

Total Lines 31
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 10
eloc 20
dl 0
loc 31
ccs 20
cts 20
cp 1
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
B isValid() 0 24 10
1
<?php
2
3
namespace Swaggest\JsonSchema\Constraint;
4
5
use Swaggest\JsonSchema\Structure\ObjectItemContract;
6
7
class UniqueItems
8
{
9
    /**
10
     * @param array $data
11
     * @return bool
12
     * @todo optimize a lot
13
     */
14 525
    public static function isValid(array $data)
15
    {
16 525
        $index = array();
17 525
        foreach ($data as $value) {
18 507
            if (is_array($value) || $value instanceof \stdClass) {
19 54
                $value = json_encode($value);
20 489
            } elseif (is_bool($value)) {
21 41
                $value = '_B' . $value;
22 489
            } elseif (is_string($value)) {
23 456
                $value = '_S' . $value;
24 64
            } elseif (is_int($value)) {
25 56
                $value = '_I' . $value;
26 12
            } elseif (is_float($value)) {
27 3
                $value = '_F' . $value;
28 9
            } elseif ($value instanceof ObjectItemContract) {
29 2
                $value = json_encode($value);
30
            }
31 507
            $tmp = &$index[$value];
32 507
            if ($tmp !== null) {
33 22
                return false;
34
            }
35 507
            $tmp = true;
36
        }
37 506
        return true;
38
    }
39
40
}