1
|
|
|
<?php |
2
|
|
|
/** |
3
|
|
|
* |
4
|
|
|
* PHP version 5.5 |
5
|
|
|
* |
6
|
|
|
* @package Forecast |
7
|
|
|
* @author Sergey V.Kuzin <[email protected]> |
8
|
|
|
* @license MIT |
9
|
|
|
*/ |
10
|
|
|
|
11
|
|
|
namespace Forecast; |
12
|
|
|
|
13
|
|
|
|
14
|
|
|
use Forecast\Model\Hour; |
15
|
|
|
use Forecast\Model\Humidity; |
16
|
|
|
use Forecast\Model\Precipitation; |
17
|
|
|
use Forecast\Model\Temperature; |
18
|
|
|
use Forecast\Model\Wind; |
19
|
|
|
|
20
|
|
|
class Hourly implements ForecastItemInterface |
21
|
|
|
{ |
22
|
|
|
/** @var float */ |
23
|
|
|
protected $summary = null; |
24
|
|
|
|
25
|
|
|
/** @var array */ |
26
|
|
|
protected $hours = []; |
27
|
|
|
|
28
|
|
|
/** |
29
|
|
|
* @api |
30
|
|
|
* |
31
|
|
|
* @return string |
32
|
|
|
*/ |
33
|
|
|
public function getSummary() |
34
|
|
|
{ |
35
|
|
|
return (string)$this->summary; |
36
|
|
|
} |
37
|
|
|
|
38
|
|
|
/** |
39
|
|
|
* @api |
40
|
|
|
* |
41
|
|
|
* @return Temperature |
42
|
|
|
*/ |
43
|
|
|
public function getTemperature(): Temperature |
44
|
|
|
{ |
45
|
|
|
// TODO: Implement getTemperature() method. |
46
|
|
|
} |
47
|
|
|
|
48
|
|
|
/** |
49
|
|
|
* @api |
50
|
|
|
* |
51
|
|
|
* @return Wind |
52
|
|
|
*/ |
53
|
|
|
public function getWind(): Wind |
54
|
|
|
{ |
55
|
|
|
// TODO: Implement getWind() method. |
56
|
|
|
} |
57
|
|
|
|
58
|
|
|
/** |
59
|
|
|
* @api |
60
|
|
|
* |
61
|
|
|
* @return string |
62
|
|
|
*/ |
63
|
|
|
public function __toString() |
64
|
|
|
{ |
65
|
|
|
return $this->getSummary(); |
66
|
|
|
} |
67
|
|
|
|
68
|
|
|
/** |
69
|
|
|
* @param array $data |
70
|
|
|
* @return ForecastItemInterface |
71
|
|
|
*/ |
72
|
|
|
public function setData(array $data): ForecastItemInterface |
73
|
|
|
{ |
74
|
|
|
$this->summary = $data['summary']; |
75
|
|
|
|
76
|
|
|
foreach ($data['hours'] as $hour) { |
77
|
|
|
$this->hours[] = (new Hour())->setData($hour); |
78
|
|
|
} |
79
|
|
|
|
80
|
|
|
|
81
|
|
|
/*$this->temperature = (new Temperature())->setData($data['temperature']); |
|
|
|
|
82
|
|
|
$this->wind = (new Wind())->setData($data['wind']); |
83
|
|
|
$this->precipitation = (new Precipitation())->setData($data['precipitation']); |
84
|
|
|
$this->humidity = (new Humidity())->setData($data['humidity']);*/ |
85
|
|
|
|
86
|
|
|
return $this; |
87
|
|
|
} |
88
|
|
|
|
89
|
|
|
public function onHours() |
90
|
|
|
{ |
91
|
|
|
return $this->hours; |
92
|
|
|
} |
93
|
|
|
|
94
|
|
|
/** |
95
|
|
|
* @param int $hour |
|
|
|
|
96
|
|
|
* |
97
|
|
|
* @return Hour |
98
|
|
|
*/ |
99
|
|
|
public function inTime($seekingHour): Hour |
100
|
|
|
{ |
101
|
|
|
$seekingHour = (int)$seekingHour; |
102
|
|
|
if ($seekingHour < 0 || $seekingHour > 23) { |
103
|
|
|
throw new \InvalidArgumentException(); |
104
|
|
|
} |
105
|
|
|
|
106
|
|
|
/** @var Hour $hour */ |
107
|
|
|
foreach ($this->hours as $hour) { |
108
|
|
|
|
109
|
|
|
$h = $hour->getDate()->format('H'); |
|
|
|
|
110
|
|
|
if ((int)$hour->getDate()->format('H') === $seekingHour) { |
111
|
|
|
break; |
112
|
|
|
} |
113
|
|
|
} |
114
|
|
|
return $hour; |
|
|
|
|
115
|
|
|
} |
116
|
|
|
|
117
|
|
|
/** |
118
|
|
|
* @return Humidity |
119
|
|
|
*/ |
120
|
|
|
public function getHumidity() |
121
|
|
|
{ |
122
|
|
|
// TODO: Implement getHumidity() method. |
123
|
|
|
} |
124
|
|
|
|
125
|
|
|
/** |
126
|
|
|
* @return Precipitation |
127
|
|
|
*/ |
128
|
|
|
public function getPrecipitation() |
129
|
|
|
{ |
130
|
|
|
// TODO: Implement getPrecipitation() method. |
131
|
|
|
} |
132
|
|
|
|
133
|
|
|
/** |
134
|
|
|
* @return string |
135
|
|
|
*/ |
136
|
|
|
public function getIcon(): string |
137
|
|
|
{ |
138
|
|
|
// TODO: Implement getIcon() method. |
139
|
|
|
} |
140
|
|
|
} |
141
|
|
|
|
Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.
The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.
This check looks for comments that seem to be mostly valid code and reports them.