vertigolabs/overcast

Dark Sky API (原名 Forecast.io) 的简单封装

1.1.2 2017-03-28 12:29 UTC

This package is auto-updated.

Last update: 2024-09-05 18:07:38 UTC


README

SensioLabsInsight

Latest Unstable Version Latest Stable Version

License Total Downloads

Overcast 是一个简单易用的 Dark Sky API (原名 Forecast.io) 封装。

Overcast 会查询 Dark Sky API 获取您指定的经纬度的天气信息。此外,您还可以指定具体的时间,无论是过去还是现在。

有关更多信息,请参阅 Dark Sky API 文档

安装

安装与使用 Composer 一样简单

{
    "require": {
        "vertigolabs/overcast": "dev-master"
    }
}

客户端适配器

Overcast 使用客户端适配器连接到 Dark Sky API。这使您能够为任何 HTTP 客户端创建自己的适配器。这对于处理从第三方获取数据(防火墙、代理等)有特殊需求的人特别有用。

Overcast 随带两个可用的客户端适配器,FileGetContentsClientAdapter 和 GuzzleClientAdapter。您也可以通过简单地实现 ClientAdapterInterface 创建自己的适配器。

默认情况下,您无需指定要使用哪个适配器。Overcast 将自动使用最佳客户端适配器。如果已安装 Guzzle,则将使用 GuzzleClientAdaptor,否则将回退到 FileGetContentsClientAdapter。

如果您希望指定客户端适配器,可以在实例化 Overcast 类时使用第二个参数来这样做

$overcast = new \VertigoLabs\Overcast\Overcast('YOUR API KEY', new \VertigoLabs\Overcast\ClientAdapters\FileGetContentsClientAdapter());
// or
$overcast = new \VertigoLabs\Overcast\Overcast('YOUR API KEY', new MyAwesomeClientAdapter());

示例

由于 Dark Sky API 简单,Overcast 同样易于使用。只需创建 Overcast 类的实例,然后调用 getForecast() 方法。

Overcast::getForecast() 返回一个结构良好的 Forecast 对象,其中包含其他数据结构,方便访问 Dark Sky 的所有响应数据。

$overcast = new \VertigoLabs\Overcast\Overcast('YOUR API KEY');
$forecast = $overcast->getForecast(37.8267,-122.423);

// check the number of API calls you've made with your API key for today
echo $overcast->getApiCalls().' API Calls Today'."\n";

// temperature current information
echo 'Current Temp: '.$forecast->getCurrently()->getTemperature()->getCurrent()."\n";
echo 'Feels Like: '.$forecast->getCurrently()->getApparentTemperature()->getCurrent()."\n";
echo 'Min Temp: '.$forecast->getCurrently()->getTemperature()->getMin()."\n";
echo 'Max Temp: '.$forecast->getCurrently()->getTemperature()->getMax()."\n";

// get daily summary
echo 'Daily Summary: '.$forecast->getDaily()->getSummary()."\n";

// loop daily data points
foreach($forecast->getDaily()->getData() as $dailyData) {
	echo 'Date: '.$dailyData->getTime()->format('D, M jS y')."\n";
	// get daily temperature information
	echo 'Min Temp: '.$dailyData->getTemperature()->getMin()."\n";
	echo 'Max Temp: '.$dailyData->getTemperature()->getMax()."\n";

	// get daily precipitation information
	echo 'Precipitation Probability: '.$dailyData->getPrecipitation()->getProbability()."\n";
	echo 'Precipitation Intensity: '.$dailyData->getPrecipitation()->getIntensity()."\n";

	// get other general daily information
	echo 'Wind Speed: '.$dailyData->getWindSpeed()."\n";
	echo 'Wind Direction: '.$dailyData->getWindBearing()."\n";
	echo 'Visibility: '.$dailyData->getVisibility()."\n";
	echo 'Cloud Coverage: '.$dailyData->getCloudCover()."\n";
}

这将输出

18 API Calls Today

Current Temp: 61.05
Feels Like: 61.05
Min Temp: 
Max Temp: 

Daily Summary: Drizzle on Tuesday, with temperatures peaking at 65°F on Thursday.

Date: Tue, Mar 31st 15
Min Temp: 53.83
Max Temp: 61.81
Precipitation Probability: 0
Precipitation Intensity: 0
Wind Speed: 12.77
Wind Direction: 308
Visibility: 8.93
Cloud Coverage: 0.25

Date: Wed, Apr 1st 15
Min Temp: 48.72
Max Temp: 60.08
Precipitation Probability: 0
Precipitation Intensity: 0
Wind Speed: 14.47
Wind Direction: 321
Visibility: 10
Cloud Coverage: 0.06

Date: Thu, Apr 2nd 15
Min Temp: 48.96
Max Temp: 65.46
Precipitation Probability: 0
Precipitation Intensity: 0
Wind Speed: 10.02
Wind Direction: 346
Visibility: 10
Cloud Coverage: 0

Date: Fri, Apr 3rd 15
Min Temp: 49.17
Max Temp: 63.68
Precipitation Probability: 0
Precipitation Intensity: 0
Wind Speed: 6.03
Wind Direction: 292
Visibility: 10
Cloud Coverage: 0.07

Date: Sat, Apr 4th 15
Min Temp: 47.14
Max Temp: 58.44
Precipitation Probability: 0
Precipitation Intensity: 0
Wind Speed: 11.48
Wind Direction: 288
Visibility: 
Cloud Coverage: 0.3

Date: Sun, Apr 5th 15
Min Temp: 47.95
Max Temp: 56.2
Precipitation Probability: 0.09
Precipitation Intensity: 0.0017
Wind Speed: 14.35
Wind Direction: 285
Visibility: 
Cloud Coverage: 0.06

Date: Mon, Apr 6th 15
Min Temp: 44.63
Max Temp: 57.25
Precipitation Probability: 0.01
Precipitation Intensity: 0.0005
Wind Speed: 8.06
Wind Direction: 281
Visibility: 
Cloud Coverage: 0

Date: Tue, Apr 7th 15
Min Temp: 51.23
Max Temp: 60.55
Precipitation Probability: 0.32
Precipitation Intensity: 0.0022
Wind Speed: 8.06
Wind Direction: 258
Visibility: 
Cloud Coverage: 0.24

待办事项

  • 接受额外的 API 选项