Ini::has()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 3
nc 1
nop 1
dl 0
loc 5
ccs 3
cts 3
cp 1
crap 1
rs 9.4285
c 0
b 0
f 0
1
<?php
2
namespace FMUP\Config;
3
4
use FMUP\Config;
5
6
class Ini implements ConfigInterface
7
{
8
    private $filePath;
9
    private $section;
10
    private $config = array();
11
12
    /**
13
     * @param string $filePath
14
     * @param string|null $section
15
     */
16 7
    public function __construct($filePath, $section = null)
17
    {
18 7
        $this->filePath = (string)$filePath;
19 7
        $this->section = is_null($section) ? null : (string) $section;
20 7
    }
21
22
    /**
23
     * @return string
24
     * @throws Exception if file do not exists
25
     */
26 7
    protected function getFilePath()
27
    {
28 7
        if (!file_exists($this->filePath)) {
29 2
            throw new Exception('File does not exist');
30
        }
31 5
        return $this->filePath;
32
    }
33
34
    /**
35
     * @return null|string
36
     */
37 5
    protected function getSection()
38
    {
39 5
        return $this->section;
40
    }
41
42
    /**
43
     * @return array
44
     * @throws Exception if file do not exists
45
     */
46 4
    protected function getConfig()
47
    {
48 4
        if (!$this->config) {
0 ignored issues
show
Bug Best Practice introduced by
The expression $this->config of type array is implicitly converted to a boolean; are you sure this is intended? If so, consider using empty($expr) instead to make it clear that you intend to check for an array without elements.

This check marks implicit conversions of arrays to boolean values in a comparison. While in PHP an empty array is considered to be equal (but not identical) to false, this is not always apparent.

Consider making the comparison explicit by using empty(..) or ! empty(...) instead.

Loading history...
49 4
            $this->config = parse_ini_file($this->getFilePath(), $this->getSection());
50
        }
51 3
        return $this->config;
52
    }
53
54
    /**
55
     * @param string|null $key
56
     * @return mixed|null
57
     */
58 3
    public function get($key = null)
59
    {
60 3
        if ($this->has($key) || is_null($key)) {
61 2
            $config = $this->getConfig();
62 2
            return is_null($key) ? $config : $config[$key];
63
        }
64 1
        return null;
65
    }
66
67
    /**
68
     * @param string $paramName
69
     * @param string|null $value
70
     * @return $this
71
     */
72 1
    public function set($paramName, $value = null)
73
    {
74 1
        $this->config = $this->getConfig();
75 1
        $this->config[$paramName] = $value;
76 1
        return $this;
77
    }
78
79
    /**
80
     * @param string $paramName
81
     * @return bool
82
     */
83 4
    public function has($paramName)
84
    {
85 4
        $config = $this->getConfig();
86 3
        return isset($config[$paramName]);
87
    }
88
89
    /**
90
     * @param array $paramArray
91
     * @param bool|false $before
92
     * @return $this
93
     */
94 1
    public function mergeConfig(array $paramArray = array(), $before = false)
95
    {
96 1
        if ($before) {
97 1
            $this->config = $this->getConfig() + $paramArray;
98
        } else {
99 1
            $this->config = $paramArray + $this->getConfig();
100
        }
101 1
        return $this;
102
    }
103
}
104