lfischer / open-weather-map-api
一个用于查询Open Weather Map API的简单PHP库。
Requires
- php: >=7.2.0
- ext-curl: *
- ext-json: *
- ext-libxml: *
- ext-simplexml: *
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.18
- phpunit/phpunit: ^9.5
- psalm/phar: ^4.6
Suggests
- guzzlehttp/guzzle: ^5|^6|^7
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客户端提供了设置不同模式
(xml
,json
或html
),单位
(metric
或imperial
)或语言
(49种语言可用)的方便方法和类。
使用位于Mode
,Unit
和Language
中的常量来获取正确的值并在您的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的原始 字符串
响应,以防您想自行处理响应。
贡献
如前所述,我并没有付费订阅以开发并测试每个数据收集。为此,我需要 您的 帮助 ;)
如果您喜欢贡献或测试受影响的端点,请告诉我!