lawnstarter / laravel-darksky
提供 DarkSky API 的包装器
Requires
- php: >=5.4.0
- guzzlehttp/guzzle: ~5.3|>=6.0
- illuminate/support: ~5.3|>=6.0
Requires (Dev)
- phpunit/phpunit: 4.*
README
此包为 DarkSky API 提供了 Laravel 风格的包装器,简化了对不断变化的天气数据的测试编写。有关请求和响应格式的更多信息,请访问:https://darksky.net/dev/docs
安装
使用以下命令使用 composer 安装此包
$ composer require lawnstarter/laravel-darksky
更新 composer 后,将服务提供者添加到 config/app.php
文件中的 providers
数组
Lawnstarter\LaravelDarkSky\LaravelDarkSkyServiceProvider::class,
要注册外观访问器,请将以下内容添加到 config/app.php
文件中的 aliases
数组
'DarkSky' => \Lawnstarter\LaravelDarkSky\Facades\DarkSky::class,
配置
将以下行添加到 .env 文件
DARKSKY_API_KEY=<your_darksky_api_key>
用法
有关响应格式的完整详细信息,请访问:https://darksky.net/dev/docs/response
必需
location(lat, lon)
传入纬度和经度坐标以获取基本响应
DarkSky::location(lat, lon)->get();
可选参数
有关可选参数的完整详细信息,请访问:https://darksky.net/dev/docs/forecast
excludes([]) / includes([])
指定要排除/包含的数据块以减少数据传输
DarkSky::location(lat, lon)->excludes(['minutely','hourly', 'daily', 'alerts', 'flags'])->get(); DarkSky::location(lat, lon)->includes(['currently'])->get(); // Same output
atTime(t)
传入一个 Unix 时间戳以获取该时间点的预报。注意:时区相对于给定位置
DarkSky::location(lat, lon)->atTime(timestamp)->get();
language(l)
指定基于文本的响应的语言
DarkSky::location(lat, lon)->language(lang)->get();
units(u)
指定基于单位的响应的单位
DarkSky::location(lat, lon)->units(units)->get();
extend()
将 "hourly" 响应从 48 小时扩展到 168 小时。注意:如果与 atTime() 时间戳一起使用,则不起作用。请参阅:https://darksky.net/dev/docs/time-machine
DarkSky::location(lat, lon)->extend()->get();
助手
以下为简写助手,其可读性与使用 includes() 仅有一个参数时相同。注意:每个查询只能使用一个,并且只返回温度特定数据
->currently() ->minutely() ->hourly() ->daily() ->flags()
例如,这两条语句是相同的
DarkSky::location(lat, lon)->hourly() DarkSky::location(lat, lon)->includes(['hourly'])->get()->hourly
DarkSky & Testing
为了简化测试静态方法,以便在实际上不调用DarkSky API的情况下强制响应为特定的有效载荷,已添加此功能。
DarkSky::setTestResponse($testResponseValue);
当此值不为null时,DarkSky包装器将始终返回此数据。如果值为null,则将实时查询DarkSky API。为了进一步简化测试,提供了示例测试响应,您可以在测试类中使用这些响应。
<?php use Lawnstarter\LaravelDarkSky\DarkSkySampleResponse; use Lawnstarter\LaravelDarkSky\DarkSky; class MyTestsDependOnDarksky extends TestCase { public function test_forecast() { ... $fakeForecast = DarkSkySampleResponse::forecast(); DarkSky::setTestResponse($fakeForecast); ... } public function test_forecast_extended_hourly() { ... $fakeForecast = DarkSkySampleResponse::forecastExtendedHourly(); DarkSky::setTestResponse($fakeForecast); ... } public function test_timemachine() { ... $fakeForecast = DarkSkySampleResponse::timemachine(); DarkSky::setTestResponse($fakeForecast); ... } }
方法 | 示例有效载荷 |
---|---|
DarkSkySampleResponse::forecast() |
查看示例天气预报JSON |
DarkSkySampleResponse::forecastExtendedHourly() |
查看示例天气预报扩展小时JSON |
DarkSkySampleResponse::timemachine() |
查看示例时间机器JSON |
致谢
许可证
MIT许可证(MIT)。请参阅许可证文件获取更多信息。