TimeZoneAwareField::setTimeZone()   A
last analyzed

Complexity

Conditions 4
Paths 4

Size

Total Lines 12
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 4.1755

Importance

Changes 0
Metric Value
dl 0
loc 12
c 0
b 0
f 0
ccs 7
cts 9
cp 0.7778
rs 9.2
cc 4
eloc 8
nc 4
nop 1
crap 4.1755
1
<?php
2
3
namespace mindplay\kissform\Fields\Base;
4
5
use DateTimeZone;
6
use InvalidArgumentException;
7
use mindplay\kissform\Field;
8
9
/**
10
 * Abstract base class for timezone-aware date/time field types.
11
 */
12
abstract class TimeZoneAwareField extends Field
13
{
14
    /**
15
     * @var DateTimeZone input time-zone
16
     */
17
    protected $timezone;
18
19
    /**
20
     * @param DateTimeZone|string|null $timezone input time-zone (or NULL to use the current default timezone)
21
     *
22
     * @throws InvalidArgumentException
23
     *
24
     * @return void
25
     */
26 7
    public function setTimeZone($timezone)
27
    {
28 7
        if ($timezone === null) {
29 1
            $timezone = new DateTimeZone(date_default_timezone_get());
30 6
        } else if (is_string($timezone)) {
31 6
            $timezone = new DateTimeZone($timezone);
32
        } else if (! $timezone instanceof DateTimeZone) {
33
            throw new InvalidArgumentException('DateTimeZone or string expected, ' . gettype($timezone) . ' given');
34
        }
35
36 7
        $this->timezone = $timezone;
37 7
    }
38
}
39