randomhost / weather
封装了从Yahoo天气API获取天气数据的函数,以便轻松检索。
Requires
- php: >=5.3.0
Requires (Dev)
- behat/behat: ~2.0
- phpspec/phpspec: ~2.4
- phpunit/phpunit: ~4.0
README
注意:由于雅虎关闭了对天气API的免费访问,此软件包自2019年1月起已被废弃。
randomhost/weather
此软件包封装了从Yahoo天气API获取天气数据的函数,以便轻松检索。它是作为randomhost/webcamoverlay
的一部分创建的,但作为独立的组件发布,以便在其他软件包中使用。
由于它是作为randomhost/webcamoverlay
的依赖项创建的,因此它只支持可用天气数据的一个子集。
用法
使用此软件包的基本方法可能如下所示
<?php namespace randomhost\Weather; require_once '/path/to/vendor/autoload.php'; // get Yahoo Weather API Feed instance $feed = new Yahoo\Feed('Cologne', Yahoo\Feed::UNITS_INTL); echo sprintf( 'Temperature: %s°%s, Humidity: %s%%', $feed->getCondition()->getTemperature(), $feed->getUnits()->getTemperature(), $feed->getAtmosphere()->getHumidity() );
这将实例化类,获取天气数据并显示当前温度和湿度。
假设您将此文件命名为weather.php
,现在您应该能够在http://example.com/weather.php
访问天气数据。
更详细的示例可以在src/www/weather.php
中找到。
Feed对象
Feed
对象是在您的应用程序中将与之交互的主要对象。它提供了从Yahoo!天气API检索数据所需的所有方法。
构造函数
构造函数接受3个参数,它们都是可选的
-
$locationName
用于从Yahoo天气API检索天气数据的地点名称。 -
$systemOfUnits
由馈送返回的单位系统。这必须是Feed::UNITS_INTL
或Feed::UNITS_US
之一。 -
$feedUrl
用于从Yahoo天气API检索天气数据的馈送URL。
如果提供了$locationName
,则将隐式调用Feed::fetchData()
,这将自动检索指定位置ID的天气数据并相应地填充数据访问对象。
如果您不希望这样做,可以省略$locationName
或将它设置为''
(一个空字符串),然后使用Feed::setLocationName()
自行配置地点名称。
可以设置$systemOfUnits
参数以确定天气馈送要使用的单位系统。如果没有提供或设置为''
(一个空字符串),则默认使用国际单位(摄氏度、千米、毫巴)。
$feedUrl
定义了从Yahoo!天气API检索天气数据的馈送URL。除非雅虎更改其API,否则通常不需要更改此参数。
配置馈送
以下公共方法可用于配置天气馈送
-
setFeedUrl($feedUrl)
设置用于从Yahoo天气API检索天气数据的馈送URL。 -
getFeedUrl()
返回最后设置的天气API馈送URL。 -
setLocationName($name)
设置用于从Yahoo天气API检索天气数据的地点名称。 -
getLocationName()
返回用于检索天气数据的最后设置的地点名称。 -
setSystemOfUnits($systemOfUnits)
设置由数据源返回的单位系统。 -
getSystemOfUnits()
返回最后设置的单位系统。
从数据源获取数据
以下公共方法可用于从数据源获取数据:
-
fetchData()
从Yahoo天气API获取天气数据,并相应地填充数据访问对象。
在使用以下任何方法之前,必须至少调用此方法一次。 -
getLocation()
返回一个包含此预报位置的Data\Location
对象。 -
getUnits()
返回一个包含预报各个方面单位的Data\Units
对象。 -
getWind()
返回一个包含关于风的预报信息的Data\Wind
对象。 -
getAtmosphere()
返回一个包含关于当前大气压力、湿度和能见度的预报信息的Data\Atmosphere
对象。 -
getAstronomy()
返回一个包含关于当前天文条件的预报信息的Data\Astronomy
对象。 -
getCondition()
返回一个包含当前天气条件的Data\Condition
对象。 -
getForecast()
返回一个包含特定一天天气预报的Data\Forecast
对象数组的数组。 -
getTitle()
返回Yahoo返回的天气数据标题。 -
getLink()
返回将天气数据链接回Yahoo的链接。
Data\Location 对象
Data\Location
对象表示预报的位置信息。
以下公共方法可用于获取数据:
-
getCity()
返回城市名称。(字符串) -
getRegion()
返回州、领地或地区。(字符串) -
getCountry()
返回国家名称。(字符串)
Data\Units 对象
Data\Units
对象表示预报的各个方面单位。
以下公共方法可用于获取数据:
-
getTemperature()
返回温度的度数单位。(字符串) -
getDistance()
返回距离的单位。(字符串) -
getPressure()
返回气压的单位。(字符串) -
getSpeed()
返回速度的单位。(字符串)
Data\Wind 对象
Data\Wind
对象表示关于风的预报信息。
以下公共方法可用于获取数据:
-
getChill()
返回风的温度(以度为单位)。(浮点数) -
getDirection()
返回风向,以度为单位。(浮点数) -
getSpeed()
返回风速。(浮点数)
Data\Atmosphere 对象
Data\Atmosphere
对象表示关于当前大气压力、湿度和能见度的预报信息。
以下公共方法可用于获取数据:
-
getHumidity()
返回湿度,以百分比表示。(浮点数) -
getVisibility()
返回能见度。(浮点数) -
getPressure()
返回气压。(浮点数) -
getRising()
返回气压状态:稳定(0)、上升(1)或下降(2)。(整数)
Data\Astronomy 对象
Data\Astronomy
对象表示关于当前天文条件的预报信息。
以下公共方法可用于获取数据:
-
getSunrise()
返回今天的日出时间。(DateTime) -
getSunset()
返回今天的日落时间。(DateTime)
Data\Condition 对象
Data\Condition
对象表示当前的天气条件。
以下公共方法可用于获取数据:
-
getText()
返回条件的文本描述。(字符串) -
getCode()
返回此预报的条件代码。您可以使用此代码选择预报的文本描述或图像。
此元素的可能的值在 条件代码 中描述。(int) -
getTemperature()
返回当前温度。(float) -
getDate()
返回适用于此预报的当前日期和时间。(\DateTime)
数据\预报对象
Data\Forecast
对象表示特定一天的天气预报。
以下公共方法可用于获取数据:
-
getDate()
返回此预报适用的日期。(\DateTime) -
getLow()
返回此日的预报最低温度。(float) -
getHigh()
返回此日的预报最高温度。(float) -
getText()
返回条件的文本描述。(字符串) -
getCode()
返回此预报的条件代码。您可以使用此代码选择预报的文本描述或图像。
此元素的可能的值在 条件代码 中描述。(int)
归属指引
请注意,您必须使用 Feed::getLink()
提供的链接 URL 并使用 Yahoo 提供的一个标志链接回 Yahoo。请参阅 Yahoo 的 Yahoo API 归属指引 了解详情。
许可证
有关完整许可证详情,请参阅 LICENSE.txt。