TimeZoneAwareField   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 27
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Test Coverage

Coverage 77.78%

Importance

Changes 0
Metric Value
dl 0
loc 27
c 0
b 0
f 0
wmc 4
lcom 1
cbo 1
ccs 7
cts 9
cp 0.7778
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A setTimeZone() 0 12 4
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