BookingOptions::getMaxStartTime()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 4
rs 10
cc 1
eloc 2
nc 1
nop 0
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