ParameterStore::getParameters()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 3
ccs 2
cts 2
cp 1
rs 10
cc 1
eloc 2
nc 1
nop 0
crap 1
1
<?php
2
3
4
  namespace ReRoute;
5
6
7
  /**
8
   * Store for route and route parts(modifiers, url template) parameters
9
   *
10
   * @package ReRoute
11
   */
12
  trait ParameterStore {
13
14
    /**
15
     * @var array
16
     */
17
    protected $parameters = [];
18
19
    /**
20
     * @var string[]
21
     */
22
    protected $defaultParameterKeys = [];
23
24
25
    /**
26
     * @param string $key
27
     * @return mixed|null
28
     */
29
    public function getParameter($key) {
30
      return !empty($this->parameters[$key]) ? $this->parameters[$key] : null;
31
    }
32
33
34
    /**
35
     * @return array
36
     */
37 42
    public function getParameters() {
38 42
      return $this->parameters;
39
    }
40
41
42
    /**
43
     * @param string $key
44
     * @param mixed $value
45
     */
46 60
    public function storeParameter($key, $value) {
47 60
      $this->parameters[$key] = $value;
48 60
    }
49
50
51
    /**
52
     * @param array $parameters
53
     * @return $this
54
     */
55 54
    public function storeParameters(array $parameters) {
56 54
      foreach ($parameters as $key => $value) {
57 12
        $this->storeParameter($key, $value);
58 54
      }
59 54
      return $this;
60
    }
61
62
63
    /**
64
     * @return array
65
     */
66 36
    public function getDefaultParameters() {
67 36
      $defaultParameters = [];
68 36
      foreach ($this->defaultParameterKeys as $parameterKey) {
69 9
        if (isset($this->parameters[$parameterKey])) {
70 9
          $defaultParameters[$parameterKey] = $this->parameters[$parameterKey];
71 9
        }
72 36
      }
73 36
      return $defaultParameters;
74
    }
75
76
77
    /**
78
     * @param string $key
79
     * @param mixed $value
80
     * @return $this
81
     */
82 60
    public function storeDefaultParameter($key, $value) {
83 60
      $this->storeParameter($key, $value);
84 60
      if (!array_key_exists($key, $this->defaultParameterKeys)) {
85 60
        $this->defaultParameterKeys[] = $key;
86 60
      }
87 60
      return $this;
88
    }
89
90
91
    /**
92
     * @param array $parameters
93
     * @return $this
94
     */
95 66
    public function storeDefaultParameters(array $parameters) {
96 66
      foreach ($parameters as $key => $value) {
97 30
        $this->storeDefaultParameter($key, $value);
98 66
      }
99 66
      return $this;
100
    }
101
102
  }
103