locaine/lcn-weather-forecast-bundle

将 Forecast.io 天气预报集成到您的 Symfony 2 项目中。具有 API 请求规范化和缓存功能。

安装次数: 1,549

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 3

分支: 1

开放问题: 0

类型:symfony-bundle

v1.0.5 2015-03-12 15:53 UTC

This package is not auto-updated.

Last update: 2024-09-14 16:30:53 UTC


README

简单易用的 Forecast.io 天气预报 Symfony 2 集成。MIT 许可证。

安装

步骤 1: 下载包

打开命令行控制台,进入您的项目目录,并执行以下命令以下载此包的最新稳定版本

$ composer require locaine/lcn-weather-forecast-bundle "~1.0"

此命令需要您全局安装了 Composer,如 Composer 文档中的安装章节所述。

步骤 2: 启用包

然后,在项目的 app/AppKernel.php 文件中添加以下行以启用包

<?php
// app/AppKernel.php

// ...
class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            // ...

            new Lcn\WeatherForecastBundle\LcnWeatherForecastBundle(),
        );

        // ...
    }

    // ...
}

步骤 3: 设置 Forecast.io API 令牌

将您的免费 Forecast.io API 令牌 粘贴到 app/config/parameters.yml 中

parameters:
    ...
    lcn.weather_forecast_provider.forecast_io.api_token: YOUR_TOKEN
    ...

### Step 4: Adjust caching (optional)

The default cache engine caches the api results in files within the %kernel.cache_dir% directory.
You can, however, provide any Cache Provider implementing the [Doctrine Cache](https://github.com/doctrine/DoctrineCacheBundle) interface:

In config.yml or services.yml:


```yaml
services:
...
    lcn.weather_forecast.cache:
        class: Doctrine\Common\Cache\PhpFileCache
        arguments: [%kernel.cache_dir%]
        calls:
            - [setNamespace, ['lcn_weather_forecast']]
...

用法

示例控制器代码

$forecast = $this->container->get('lcn.weather_forecast');

$lat = 53.553521;
$lng = 9.948773;


$forecastForDay = $forecast->getForToday($lat, $lng);
// OR:
$forecastForDay = $forecast->getForDay($lat, $lng, strtotime('tomorrow'));

echo $forecastForDay->getSummary();
echo $forecastForDay->getIcon();
foreach ($forecastForDay->getHours() as $hour => $forecastForHour) {
    echo $forecastForHour->getSummary();
    echo $forecastForHour->getIcon();
    $key = 'temperature'; // $key can be any key from forecast.io api, e.g. time, summary, icon, precipIntensity, precipIntensity, precipProbability, temperature, apparentTemperature, dewPoint, humidity, windSpeed, windBearing, visibility, cloudCover, pressure, ozone
    echo $forecastForHour->get($key, 'fallback default value');
}

$forecastForHour = $forecast->getForCurrentHour($lat, $lng);
// OR:
$forecastForHour = $forecast->getForHour($lat, $lng, strtotime('+ 1 day 3 hours'));

echo $forecastForHour->getSummary();
echo $forecastForHour->getIcon();
$key = 'temperature'; // $key can be any key from forecast.io api, e.g. time, summary, icon, precipIntensity, precipIntensity, precipProbability, temperature, apparentTemperature, dewPoint, humidity, windSpeed, windBearing, visibility, cloudCover, pressure, ozone
echo $forecastForHour->get($key, 'fallback default value');