mrcnpdlk / weather-api
波兰的天气API和空气质量
v1.0.1
2018-06-11 13:35 UTC
Requires
- php: >=7.0
- ext-curl: *
- mjaschen/phpgeo: ^2.0.2
- mrcnpdlk/psr16cache-adapter: ~0.1.1
- nesbot/carbon: ^1.29.2
- netresearch/jsonmapper: ^1.4.0
- php-curl-class/php-curl-class: ~8.0.3
Requires (Dev)
- mrcnpdlk/monolog: ~0.1.1
- phpfastcache/phpfastcache: ~7.0
- phpunit/phpunit: ~6.3
This package is auto-updated.
Last update: 2024-09-04 07:59:51 UTC
README
内容
安装
使用composer安装最新版本
composer require mrcnpdlk/weather-api
基本用法
缓存
库支持基于PSR-16标准的缓存组件。
以下示例使用了phpfastcache/phpfastcache V7。 phpfastcache/phpfastcache
支持许多端点,例如Files
、Sqlite
、Redis
等。更多关于使用缓存和配置的信息,您可以在Wiki中找到。
/** * Cache in system files */ $oFilesConfig = new \Phpfastcache\Drivers\Files\Config(); $oFilesConfig->setPath(sys_get_temp_dir())->setDefaultTtl(60); $oInstanceCacheFiles = new \Phpfastcache\Helper\Psr16Adapter('files', $oFilesConfig); /** * Cache in Redis */ $oRedisConfig = new \Phpfastcache\Drivers\Redis\Config(); $oRedisConfig ->setHost('localhost') ->setPort(6379) ->setDefaultTtl(60) ; $oInstanceCacheRedis = new \Phpfastcache\Helper\Psr16Adapter('redis', $oRedisConfig);
日志
库还支持基于PSR-3标准的日志组件,例如非常流行的monolog/monolog。
$oInstanceLogger = new \Monolog\Logger('name_of_my_logger'); $oInstanceLogger->pushHandler(new \Monolog\Handler\ErrorLogHandler( \Monolog\Handler\ErrorLogHandler::OPERATING_SYSTEM, \Psr\Log\LogLevel::DEBUG ) )->pushProcessor(new \Monolog\Processor\PsrLogMessageProcessor());
外部来源
GIOS
GIOS(环境保护总局 - Główny Inspektorat Ochrony Środowiska)提供无需任何认证的API。
Airly
Airly建立了空气质量传感器的网络,这些传感器可以部署在整个城市或县。如果您想使用此API的外部数据,您需要从此处获取免费的Token密钥。
OWM
Open Weather Map是一个广为人知的天气和预报项目。要使用它,您需要从此处获取免费的Token密钥。
API使用
创建实例
$oClient = new \mrcnpdlk\Weather\Client(); $oClient ->setCacheInstance($oInstanceCacheFiles) ->setLoggerInstance($oInstanceLogger) ->setAirlyConfig('AIRLY_TOKEN') // not required but recommended ->setOWMConfig('OWM_TOKEN') // not required but recommended ; $oApi = new \mrcnpdlk\Weather\Api($oClient);
默认情况下,API使用
- 通过在运行脚本的机器的公共IP地址中找到的当前地理位置
- 运行脚本的机器的当前日期
我们可以通过调用setLocation()
方法来更改位置。
use mrcnpdlk\Weather\NativeModel\GeoPoint; $oApi->setLocation(new GeoPoint(51.758158,19.544377));
方法
示例
getAddress()
mrcnpdlk\Weather\Model\Address Object
(
[countryCode] => pl
[province] => łódzkie
[commune] => Łódź
[place] => Łódź
[neighbourhood] => Katedralna
[street] => Wincentego Tymienieckiego
[homeNr] => 16
[postalCode] => 90-365
)
getSunSchedule()
此方法对接近极地的位置可能给出不合适的结果。
mrcnpdlk\Weather\Model\SunSchedule Object
(
[sunrise] => 07:46:57
[sunset] => 15:50:12
[dayDuration] => 8:03
[transit] => 11:48:34
[civilTwilightBegin] => 07:07:27
[civilTwilightEnd] => 16:29:42
[nauticalTwilightBegin] => 06:24:41
[nauticalTwilightEnd] => 17:12:27
[astronomicalTwilightBegin] => 05:44:05
[astronomicalTwilightEnd] => 17:53:03
)
getUVIndex()
0.43
getNearestGiosStation()
mrcnpdlk\Weather\NativeModel\Gios\Station Object
(
[id] => 10058
[stationName] => Łódź-Jana Pawła II 15
[dateStart] => 2015-10-27 00:00:00
[dateEnd] =>
[gegrLat] => 51.754613
[gegrLon] => 19.434925
[addressStreet] => al. Jana Pawła II 15
[city] => mrcnpdlk\Weather\NativeModel\Gios\City Object
(
[id] => 516
[name] => Łódź
[commune] => mrcnpdlk\Weather\NativeModel\Gios\Commune Object
(
[communeName] => Łódź
[districtName] => Łódź
[provinceName] => ŁÓDZKIE
)
)
[distance] => 2253.495
)
mrcnpdlk\Weather\NativeModel\Gios\Station
实现了两个方法