Completed
Pull Request — master (#28)
by Vitaliy
03:02
created

RequestContext::__construct()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 11
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 3.0123

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 11
ccs 8
cts 9
cp 0.8889
rs 9.4285
cc 3
eloc 8
nc 3
nop 2
crap 3.0123
1
<?php
2
3
4
  namespace Fiv\Form;
5
6
7
  /**
8
   *
9
   */
10
  class RequestContext {
11
12
    CONST METHOD_GET = 'GET';
13
14
    CONST METHOD_POST = 'POST';
15
16
    /**
17
     * @var string
18
     */
19
    protected $method = null;
20
21
    /**
22
     * @var array
23
     */
24
    protected $attributes = [];
25
26
27
    /**
28
     * @param string $method
29
     * @param array $attributes
30
     */
31 10
    public function __construct($method, array $attributes = []) {
32 10
      if (!is_string($method)) {
33
        throw new \InvalidArgumentException('Parameter "method" should be a string,  ' . gettype($method) . ' given.');
34
      }
35 10
      $method = mb_strtoupper($method);
36 10
      if (!in_array($method, [self::METHOD_GET, self::METHOD_POST])) {
37 1
        throw new \InvalidArgumentException('Invalid http method name.');
38
      }
39 9
      $this->method = $method;
40 9
      $this->attributes = $attributes;
41 9
    }
42
43
44
    /**
45
     * @return mixed
46
     */
47 1
    public function getMethod() {
48 1
      return $this->method;
49
    }
50
51
52
    /**
53
     * @param string $method
54
     * @return bool
55
     */
56 2
    public function isMethod($method) {
57 2
      return $this->method == mb_strtoupper($method);
58
    }
59
60
61
    /**
62
     * @param string $name
63
     * @return bool
64
     */
65 9
    public function has($name) {
66 9
      return isset($this->attributes[$name]);
67
    }
68
69
70
    /**
71
     * @param string $name
72
     * @return mixed|null
73
     */
74 9
    public function get($name) {
75 9
      return isset($this->attributes[$name]) ? $this->attributes[$name] : null;
76
    }
77
78
79
    /**
80
     * @return array
81
     */
82 2
    public function all() {
83 2
      return $this->attributes;
84
    }
85
86
87
  }