lfischer/open-weather-map-api

一个用于查询Open Weather Map API的简单PHP库。

1.0 2021-03-13 12:49 UTC

This package is auto-updated.

Last update: 2024-09-14 23:54:41 UTC


README

此库将帮助您将Open Weather Map API集成到您的Web服务中。它轻量级,并提供所有必要的代码,包括许多方便的方法。

快速入门

使用API非常简单 - 您只需提供一个API密钥(在此获取一个)即可使用它。存在用于通过预定义条件检索不同天气数据的端点,例如“按国家和城市”,“按经纬度”,“按机场代码”或甚至“按IP地址”。

只需创建一个API实例并获取所需的端点。这些端点将包含带有类型参数的方便方法,以便接收所需的数据。

use lfischer\openWeatherMap\API;

// Get weather data by a city and (optional) country name.
$weather = (new API('<API-key here>'))
    ->getCurrentWeather()
    ->byCityName('Dusseldorf,Germany');

// Get weather data by a "city ID".
$weather = (new API('<API-key here>'))
    ->getCurrentWeather()
    ->byCityId(524901);

默认选项

大多数端点可以定义一个语言以获取您语言中的API响应。更多详细信息请向下滚动 :)

默认情况下,您将收到一个包含您喜欢的数据的数组。某些端点可以使用不同的模式,如“XML”和“HTML”。

此外,还可以使用不同的单位,如“公制”和“英制”。

数据收集API端点

目标是实现每个数据收集API端点的PHP类。主要的API类为每个可用的端点提供了访问器方法。

  • $api->getClimateForecast()返回一个ClimateForecastEndpoint实例。
  • $api->getCurrentWeather()返回一个CurrentWeatherEndpoint实例。
  • $api->getHourlyForecast()返回一个HourlyForecastEndpoint实例。
  • $api->getDailyForecast()返回一个DailyForecastEndpoint实例。
  • $api->getOneCall()返回一个OneCallEndpoint实例。

遗憾的是,某些端点需要付费订阅,我没有。如果有人喜欢为受影响的端点做出贡献或测试,请告诉我!

更多方便的方法

API客户端提供了设置不同模式xmljsonhtml),单位metricimperial)或语言(49种语言可用)的方便方法和类。

使用位于ModeUnitLanguage中的常量来获取正确的值并在您的IDE中自动完成。

// Get weather data by a city and (optional) country name.
use lfischer\openWeatherMap\API;
use lfischer\openWeatherMap\Parameter\Language;
use lfischer\openWeatherMap\Parameter\Mode;
use lfischer\openWeatherMap\Parameter\Unit;

$weather = (new API('<API-key here>'))
    ->getCurrentWeather()
    ->setMode(Mode::XML)
    ->setUnit(Unit::METRIC)
    ->setLanguage(Language::ENGLISH)
    ->byCityName('Dusseldorf,Germany');

不同的请求选项

根据您的环境和可能的库,API客户端可以使用三种不同的请求适配器。

cURL

如果您无法使用file_get_contents,则可以使用'Curl'请求适配器。为此,您的环境需要提供curl PHP扩展。

Dump

可以使用的'Dump'请求适配器用于返回准备好的URL,如果您有自己的请求库要与之一起使用。这也用于测试。

Guzzle

如果您是伟大的Guzzle库的粉丝,则可以使用此适配器并利用其所有出色的功能 :)

简单

'Simple'请求适配器使用file_get_contents(就像以前的版本一样)。为此适配器,您需要激活fopen封装器

响应类型

根据模式选项,响应将以不同的Response类返回。每个响应类型都有一个getResponse方法,该方法返回特定的数据集。

  • HtmlResponse->getResponse()返回一个string
  • JsonResponse->getResponse() 返回一个 数组
  • XmlResponse->getResponse() 返回一个 SimpleXMLElement

每种类型还包含一个 getRawResponse 方法,它将返回API的原始 字符串 响应,以防您想自行处理响应。

贡献

如前所述,我并没有付费订阅以开发并测试每个数据收集。为此,我需要 您的 帮助 ;)

如果您喜欢贡献或测试受影响的端点,请告诉我!