Dictionary   A
last analyzed

Complexity

Total Complexity 10

Size/Duplication

Total Lines 70
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 70
rs 10
wmc 10
lcom 1
cbo 0

7 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A containsKey() 0 4 1
A get() 0 8 2
A set() 0 5 1
A count() 0 4 1
A toArray() 0 4 1
A fromArray() 0 14 3
1
<?php
2
3
/**
4
 * This file is part of expect package.
5
 *
6
 * (c) Noritaka Horio <[email protected]>
7
 *
8
 * This source file is subject to the MIT license that is bundled
9
 * with this source code in the file LICENSE.
10
 */
11
12
namespace expect;
13
14
use \OutOfBoundsException;
15
use \Countable;
16
17
final class Dictionary implements Countable
18
{
19
20
    private $values;
21
22
    public function __construct(array $values = [])
23
    {
24
        $this->values = $values;
25
    }
26
27
    /**
28
     *
29
     *
30
     * @param string $value
0 ignored issues
show
Bug introduced by
There is no parameter named $value. Was it maybe removed?

This check looks for PHPDoc comments describing methods or function parameters that do not exist on the corresponding method or function.

Consider the following example. The parameter $italy is not defined by the method finale(...).

/**
 * @param array $germany
 * @param array $island
 * @param array $italy
 */
function finale($germany, $island) {
    return "2:1";
}

The most likely cause is that the parameter was removed, but the annotation was not.

Loading history...
31
     *
32
     * @return boolean
33
     */
34
    public function containsKey($key)
35
    {
36
        return array_key_exists($key, $this->values);
37
    }
38
39
    /**
40
     * @param string $value
0 ignored issues
show
Bug introduced by
There is no parameter named $value. Was it maybe removed?

This check looks for PHPDoc comments describing methods or function parameters that do not exist on the corresponding method or function.

Consider the following example. The parameter $italy is not defined by the method finale(...).

/**
 * @param array $germany
 * @param array $island
 * @param array $italy
 */
function finale($germany, $island) {
    return "2:1";
}

The most likely cause is that the parameter was removed, but the annotation was not.

Loading history...
41
     * @return mixed
42
     */
43
    public function get($key)
44
    {
45
        if (!$this->containsKey($key)) {
46
            throw new OutOfBoundsException('No element at position ' . $key);
47
        }
48
49
        return $this->values[$key];
50
    }
51
52
    public function set($key, $value)
53
    {
54
        $this->values[$key] = $value;
55
        return $this;
56
    }
57
58
    /**
59
     * @return int
60
     */
61
    public function count()
62
    {
63
        return count($this->values);
64
    }
65
66
    public function toArray()
67
    {
68
        return $this->values;
69
    }
70
71
    public static function fromArray(array $values = [])
72
    {
73
        $defaultValues = [];
74
75
        foreach ($values as $key => $value) {
76
            if (is_array($value)) {
77
                $defaultValues[$key] = new static($value);
78
            } else {
79
                $defaultValues[$key] = $value;
80
            }
81
        }
82
83
        return new static($defaultValues);
84
    }
85
86
}
87