Completed
Push — master ( fd72ee...533bff )
by Artem
01:57
created

StaticDictionary::find()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 6
ccs 3
cts 3
cp 1
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 3
nc 2
nop 1
crap 2
1
<?php
2
3
//----------------------------------------------------------------------
4
//
5
//  Copyright (C) 2015 Artem Rodygin
6
//
7
//  You should have received a copy of the MIT License along with
8
//  this file. If not, see <http://opensource.org/licenses/MIT>.
9
//
10
//----------------------------------------------------------------------
11
12
namespace Dictionary;
13
14
/**
15
 * Abstract static dictionary of key/value pairs.
16
 */
17
abstract class StaticDictionary implements StaticDictionaryInterface
18
{
19
    /** @var array Dictionary values (to be overloaded). */
20
    protected static $dictionary = [];
21
22
    /**
23
     * Returns dictionary.
24
     *
25
     * @return  array
26
     */
27 6
    protected static function dictionary()
28
    {
29 6
        return static::$dictionary;
30
    }
31
32
    /**
33
     * {@inheritdoc}
34
     */
35 1
    public static function all()
36
    {
37 1
        return static::dictionary();
38
    }
39
40
    /**
41
     * {@inheritdoc}
42
     */
43 1
    public static function get($key)
44
    {
45 1
        $dictionary = static::dictionary();
46
47 1
        if (array_key_exists($key, $dictionary)) {
48 1
            return $dictionary[$key];
49
        }
50
        else {
51 1
            return static::FALLBACK === null ? null : $dictionary[static::FALLBACK];
52
        }
53
    }
54
55
    /**
56
     * {@inheritdoc}
57
     */
58 1
    public static function has($key)
59
    {
60 1
        return array_key_exists($key, static::dictionary());
61
    }
62
63
    /**
64
     * {@inheritdoc}
65
     */
66 1
    public static function find($value)
67
    {
68 1
        $key = array_search($value, static::dictionary());
69
70 1
        return $key === false ? static::FALLBACK : $key;
71
    }
72
73
    /**
74
     * {@inheritdoc}
75
     */
76 1
    public static function keys()
77
    {
78 1
        return array_keys(static::dictionary());
79
    }
80
81
    /**
82
     * {@inheritdoc}
83
     */
84 1
    public static function values()
85
    {
86 1
        return array_values(static::dictionary());
87
    }
88
}
89