overtrue/weather

A weather SDK.

Maintainers

👁 overtrue

Package info

github.com/overtrue/weather

pkg:composer/overtrue/weather

Fund package maintenance!

overtrue

Statistics

Installs: 829

Dependents: 0

Suggesters: 0

Stars: 176

Open Issues: 1

1.1.0 2022-02-21 11:24 UTC

Requires

Requires (Dev)

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT 6d333287305205334508a22a49c3fd2967f90353

  • overtrue <i.woop@overtrue.me>

This package is auto-updated.

Last update: 2026-06-07 00:05:42 UTC


README

🌈 基于高德开放平台的 PHP 天气信息组件。

👁 Tests

👁 Sponsor me

安装

$ composer require overtrue/weather -vvv

配置

在使用本扩展之前,你需要去 高德开放平台 注册账号,然后创建应用,获取应用的 API Key。

使用

use Overtrue\Weather\Weather;

$key = 'xxxxxxxxxxxxxxxxxxxxxxxxxxx';

$weather = new Weather($key);

获取实时天气

$response = $weather->getLiveWeather('深圳');

示例:

{
 "status": "1",
 "count": "1",
 "info": "OK",
 "infocode": "10000",
 "lives": [
 {
 "province": "广东",
 "city": "深圳市",
 "adcode": "440300",
 "weather": "中雨",
 "temperature": "27",
 "winddirection": "西南",
 "windpower": "5",
 "humidity": "94",
 "reporttime": "2018-08-21 16:00:00"
 }
 ]
}

获取近期天气预报

$response = $weather->getForecastsWeather('深圳');

示例:

{
 "status": "1",
 "count": "1",
 "info": "OK",
 "infocode": "10000",
 "forecasts": [
 {
 "city": "深圳市",
 "adcode": "440300",
 "province": "广东",
 "reporttime": "2018-08-21 11:00:00",
 "casts": [
 {
 "date": "2018-08-21",
 "week": "2",
 "dayweather": "雷阵雨",
 "nightweather": "雷阵雨",
 "daytemp": "31",
 "nighttemp": "26",
 "daywind": "无风向",
 "nightwind": "无风向",
 "daypower": "≤3",
 "nightpower": "≤3"
 },
 {
 "date": "2018-08-22",
 "week": "3",
 "dayweather": "雷阵雨",
 "nightweather": "雷阵雨",
 "daytemp": "32",
 "nighttemp": "27",
 "daywind": "无风向",
 "nightwind": "无风向",
 "daypower": "≤3",
 "nightpower": "≤3"
 },
 {
 "date": "2018-08-23",
 "week": "4",
 "dayweather": "雷阵雨",
 "nightweather": "雷阵雨",
 "daytemp": "32",
 "nighttemp": "26",
 "daywind": "无风向",
 "nightwind": "无风向",
 "daypower": "≤3",
 "nightpower": "≤3"
 },
 {
 "date": "2018-08-24",
 "week": "5",
 "dayweather": "雷阵雨",
 "nightweather": "雷阵雨",
 "daytemp": "31",
 "nighttemp": "26",
 "daywind": "无风向",
 "nightwind": "无风向",
 "daypower": "≤3",
 "nightpower": "≤3"
 }
 ]
 }
 ]
}

获取 XML 格式返回值

以上两个方法第二个参数为返回值类型,可选 jsonxml,默认 json

$response = $weather->getLiveWeather('深圳', 'xml');

示例:

<response>
 <status>1</status>
 <count>1</count>
 <info>OK</info>
 <infocode>10000</infocode>
 <lives type="list">
 <live>
 <province>广东</province>
 <city>深圳市</city>
 <adcode>440300</adcode>
 <weather>中雨</weather>
 <temperature>27</temperature>
 <winddirection>西南</winddirection>
 <windpower>5</windpower>
 <humidity>94</humidity>
 <reporttime>2018-08-21 16:00:00</reporttime>
 </live>
 </lives>
</response>

参数说明

array | string getLiveWeather(string $city, string $format = 'json')
array | string getForecastsWeather(string $city, string $format = 'json')
  • $city - 城市名/高德地址位置 adcode,比如:“深圳” 或者(adcode:440300);
  • $format - 输出的数据格式,默认为 json 格式,当 output 设置为 “xml” 时,输出的为 XML 格式的数据。

在 Laravel 中使用

在 Laravel 中使用也是同样的安装方式,配置写在 config/services.php 中:

 .
 .
 .
 'weather' => [
 'key' => env('WEATHER_API_KEY'),
 ],

然后在 .env 中配置 WEATHER_API_KEY

WEATHER_API_KEY=xxxxxxxxxxxxxxxxxxxxx

可以用两种方式来获取 Overtrue\Weather\Weather 实例:

方法参数注入

 .
 .
 .
 public function edit(Weather $weather)
 {
 $response = $weather->getLiveWeather('深圳');
 }
 .
 .
 .

服务名访问

 .
 .
 .
 public function edit()
 {
 $response = app('weather')->getLiveWeather('深圳');
 }
 .
 .
 .

参考

❤️ Sponsor me

👁 Sponsor me

如果你喜欢我的项目并想支持它,点击这里 ❤️

Project supported by JetBrains

Many thanks to Jetbrains for kindly providing a license for me to work on this and other open-source projects.

👁 Image

PHP 扩展包开发

想知道如何从零开始构建 PHP 扩展包?

请关注我的实战课程,我会在此课程中分享一些扩展开发经验 —— 《PHP 扩展包实战教程 - 从入门到发布》

License

MIT