3 * OpenWeatherMap-PHP-API — A php api to parse weather data from http://www.OpenWeatherMap.org .
7 * Please see the LICENSE file distributed with this source code for further
8 * information regarding copyright and licensing.
10 * Please visit the following links to read about the usage policies and the license of
11 * OpenWeatherMap before using this class:
13 * @see http://www.OpenWeatherMap.org
14 * @see http://www.OpenWeatherMap.org/terms
15 * @see http://openweathermap.org/appid
18 namespace Cmfcmf\OpenWeatherMap;
20 use Cmfcmf\OpenWeatherMap;
21 use Cmfcmf\OpenWeatherMap\Util\City;
22 use Cmfcmf\OpenWeatherMap\Util\Sun;
23 use Cmfcmf\OpenWeatherMap\Util\Temperature;
24 use Cmfcmf\OpenWeatherMap\Util\Time;
25 use Cmfcmf\OpenWeatherMap\Util\Unit;
26 use Cmfcmf\OpenWeatherMap\Util\Weather as WeatherObj;
27 use Cmfcmf\OpenWeatherMap\Util\Wind;
32 class Forecast extends CurrentWeather
35 * @var Time The time of the forecast.
40 * Create a new weather object for forecasts.
42 * @param \SimpleXMLElement $xml The forecasts xml.
43 * @param string $units Ths units used.
47 public function __construct(\SimpleXMLElement $xml, $units)
49 $this->city = new City($xml->city['id'], $xml->city['name'], $xml->city->coord['lon'], $xml->city->coord['lat'], $xml->city->country);
51 if ($units == 'metric') {
52 $temperatureUnit = "°C";
54 $temperatureUnit = 'F';
57 $xml->temperature['value'] = ($xml->temperature['max'] + $xml->temperature['min']) / 2;
59 $this->temperature = new Temperature(new Unit($xml->temperature['value'], $temperatureUnit), new Unit($xml->temperature['min'], $temperatureUnit), new Unit($xml->temperature['max'], $temperatureUnit));
60 $this->humidity = new Unit($xml->humidity['value'], $xml->humidity['unit']);
61 $this->pressure = new Unit($xml->pressure['value'], $xml->pressure['unit']);
63 // This is kind of a hack, because the units are missing in the xml document.
64 if ($units == 'metric') {
65 $windSpeedUnit = 'm/s';
67 $windSpeedUnit = 'mps';
70 $this->wind = new Wind(new Unit($xml->windSpeed['mps'], $windSpeedUnit, $xml->windSpeed['name']), new Unit($xml->windDirection['value'], $xml->windDirection['code'], $xml->windDirection['name']));
71 $this->clouds = new Unit($xml->clouds['all'], $xml->clouds['unit'], $xml->clouds['value']);
72 $this->precipitation = new Unit($xml->precipitation['value'], null, $xml->precipitation['type']);
73 $this->sun = new Sun(new \DateTime($xml->city->sun['rise']), new \DateTime($xml->city->sun['set']));
74 $this->weather = new WeatherObj($xml->symbol['number'], $xml->symbol['name'], $xml->symbol['var']);
75 $this->lastUpdate = new \DateTime($xml->lastupdate['value']);
77 if (isset($xml['from'])) {
78 $this->time = new Time($xml['from'], $xml['to']);
80 $this->time = new Time($xml['day']);