-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathWeather.php
More file actions
89 lines (67 loc) · 2.1 KB
/
Weather.php
File metadata and controls
89 lines (67 loc) · 2.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<?php
namespace ProgrammatorDev\OpenWeatherMap\Entity\OneCall;
use ProgrammatorDev\OpenWeatherMap\Entity\Coordinate;
use ProgrammatorDev\OpenWeatherMap\Entity\Timezone;
use ProgrammatorDev\OpenWeatherMap\Helper\EntityHelper;
class Weather
{
private Coordinate $coordinate;
private Timezone $timezone;
private WeatherData $current;
/** @var ?MinuteData[] */
private ?array $minutelyForecast;
/** @var HourData[] */
private array $hourlyForecast;
/** @var DayData[] */
private array $dailyForecast;
/** @var ?Alert[] */
private ?array $alerts;
public function __construct(array $data)
{
$this->coordinate = new Coordinate([
'lat' => $data['lat'],
'lon' => $data['lon']
]);
$this->timezone = new Timezone([
'timezone' => $data['timezone'],
'timezone_offset' => $data['timezone_offset']
]);
$this->current = new WeatherData($data['current']);
$this->minutelyForecast = isset($data['minutely'])
? EntityHelper::createEntityList(MinuteData::class, $data['minutely'])
: null;
$this->hourlyForecast = EntityHelper::createEntityList(HourData::class, $data['hourly']);
$this->dailyForecast = EntityHelper::createEntityList(DayData::class, $data['daily']);
$this->alerts = isset($data['alerts'])
? EntityHelper::createEntityList(Alert::class, $data['alerts'])
: null;
}
public function getCoordinate(): Coordinate
{
return $this->coordinate;
}
public function getTimezone(): Timezone
{
return $this->timezone;
}
public function getCurrent(): WeatherData
{
return $this->current;
}
public function getMinutelyForecast(): ?array
{
return $this->minutelyForecast;
}
public function getHourlyForecast(): array
{
return $this->hourlyForecast;
}
public function getDailyForecast(): array
{
return $this->dailyForecast;
}
public function getAlerts(): ?array
{
return $this->alerts;
}
}