Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/overtrue/weather

:rainbow: 基于高德开放平台接口的 PHP 天气信息组件。
https://github.com/overtrue/weather

weather weather-api weather-sdk

Last synced: about 2 months ago
JSON representation

:rainbow: 基于高德开放平台接口的 PHP 天气信息组件。

Awesome Lists containing this project

README

        

Weather

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

[![Tests](https://github.com/overtrue/weather/actions/workflows/tests.yml/badge.svg)](https://github.com/overtrue/weather/actions/workflows/tests.yml)

[![Sponsor me](https://github.com/overtrue/overtrue/blob/master/sponsor-me-button-s.svg?raw=true)](https://github.com/sponsors/overtrue)

## 安装

```sh
$ composer require overtrue/weather -vvv
```

## 配置

在使用本扩展之前,你需要去 [高德开放平台](https://lbs.amap.com/dev/id/newuser) 注册账号,然后创建应用,获取应用的 API Key。

## 使用

```php
use Overtrue\Weather\Weather;

$key = 'xxxxxxxxxxxxxxxxxxxxxxxxxxx';

$weather = new Weather($key);
```

### 获取实时天气

```php
$response = $weather->getLiveWeather('深圳');
```
示例:

```json
{
"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('深圳');
```
示例:

```json
{
"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 格式返回值

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

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

示例:

```xml

1
1
OK
10000


广东
深圳市
440300
中雨
27
西南
5
94
2018-08-21 16:00:00

```

### 参数说明

```
array | string getLiveWeather(string $city, string $format = 'json')
array | string getForecastsWeather(string $city, string $format = 'json')
```

> - `$city` - 城市名/[高德地址位置 adcode](https://lbs.amap.com/api/webservice/guide/api/district),比如:“深圳” 或者(adcode:440300);
> - `$format` - 输出的数据格式,默认为 json 格式,当 output 设置为 “`xml`” 时,输出的为 XML 格式的数据。

### 在 Laravel 中使用

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

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

然后在 `.env` 中配置 `WEATHER_API_KEY` :

```env
WEATHER_API_KEY=xxxxxxxxxxxxxxxxxxxxx
```

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

#### 方法参数注入

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

#### 服务名访问

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

```

## 参考

- [高德开放平台天气接口](https://lbs.amap.com/api/webservice/guide/api/weatherinfo/)

## :heart: Sponsor me

[![Sponsor me](https://github.com/overtrue/overtrue/blob/master/sponsor-me.svg?raw=true)](https://github.com/sponsors/overtrue)

如果你喜欢我的项目并想支持它,[点击这里 :heart:](https://github.com/sponsors/overtrue)

## Project supported by JetBrains

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

[![](https://resources.jetbrains.com/storage/products/company/brand/logos/jb_beam.svg)](https://www.jetbrains.com/?from=https://github.com/overtrue)

## PHP 扩展包开发

> 想知道如何从零开始构建 PHP 扩展包?
>
> 请关注我的实战课程,我会在此课程中分享一些扩展开发经验 —— [《PHP 扩展包实战教程 - 从入门到发布》](https://learnku.com/courses/creating-package)

## License

MIT