BookingOptions   A
last analyzed

Complexity

Total Complexity 10

Size/Duplication

Total Lines 95
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Importance

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

6 Methods

Rating   Name   Duplication   Size   Complexity  
A getMinStartTime() 0 4 1
A getMaxStartTime() 0 4 1
A getMinEndTime() 0 4 1
A getMaxEndTime() 0 4 1
A __set() 0 16 3
A validateTime() 0 12 3
1
<?php
2
3
namespace JhFlexiTime\Options;
4
5
use Zend\Stdlib\AbstractOptions;
6
7
/**
8
 * Class BookingOptions
9
 * @package JhFlexiTime\Options
10
 * @author Aydin Hassan <[email protected]>
11
 */
12
class BookingOptions extends AbstractOptions implements BookingOptionsInterface
13
{
14
15
    /**
16
     * @var false|string
17
     */
18
    protected $minStartTime = false;
19
20
    /**
21
     * @var false|string
22
     */
23
    protected $maxStartTime = false;
24
25
    /**
26
     * @var false|string
27
     */
28
    protected $minEndTime = false;
29
30
    /**
31
     * @var false|string
32
     */
33
    protected $maxEndTime = false;
34
35
    /**
36
     * @return bool|string
37
     */
38
    public function getMinStartTime()
39
    {
40
        return $this->minStartTime;
41
    }
42
43
        /**
44
     * @return bool|string
45
     */
46
    public function getMaxStartTime()
47
    {
48
        return $this->maxStartTime;
49
    }
50
51
    /**
52
     * @return bool|string
53
     */
54
    public function getMinEndTime()
55
    {
56
        return $this->minEndTime;
57
    }
58
59
    /**
60
     * @return bool|string
61
     */
62
    public function getMaxEndTime()
63
    {
64
        return $this->maxEndTime;
65
    }
66
67
    /**
68
     * @param string $key
69
     * @param string|false $value
70
     * @throws \InvalidArgumentException
71
     * @throws \BadMethodCallException
72
     */
73
    public function __set($key, $value)
74
    {
75
        $property = lcfirst(str_replace(' ', '', ucwords(str_replace('_', ' ', $key))));
76
        if (property_exists($this, $property)) {
77
78
            if ($this->validateTime($value)) {
0 ignored issues
show
Bug introduced by
It seems like $value defined by parameter $value on line 73 can also be of type false; however, JhFlexiTime\Options\BookingOptions::validateTime() does only seem to accept string, maybe add an additional type check?

This check looks at variables that have been passed in as parameters and are passed out again to other methods.

If the outgoing method call has stricter type requirements than the method itself, an issue is raised.

An additional type check may prevent trouble.

Loading history...
79
                $this->$property = $value;
80
            } else {
81
                throw new \InvalidArgumentException(sprintf("%s should be a 24 hour time in the format HH:MM", $key));
82
            }
83
        } else {
84
            throw new \BadMethodCallException(
85
                sprintf('The option "%s" is not a valid property', $key)
86
            );
87
        }
88
    }
89
90
    /**
91
     * @param string $time
92
     * @return bool
93
     */
94
    public function validateTime($time)
95
    {
96
        if ($time === false) {
97
            return true;
98
        }
99
100
        if (preg_match("/(2[0-3]|[01][0-9]):[0-5][0-9]/", $time)) {
101
            return true;
102
        }
103
104
        return false;
105
    }
106
}
107