現在の位置: ホーム> 最新記事一覧> Laravelのincapsulation date_sunset()サービスは、都市のサンセットクエリを提供します

Laravelのincapsulation date_sunset()サービスは、都市のサンセットクエリを提供します

M66 2025-05-31

Web開発では、時間と日付関連の機能の処理は非常に一般的な要件です。 Laravelで都市ごとにサンセットタイムを照会するサービスを実装する場合は、 date_sunset()関数をカプセル化することで実装できます。 Laravelは強力なスケーラビリティを提供し、そのような機能を非常にシンプルにモジュール化します。この記事では、この関数を実装する方法を段階的に説明します。

1。date_sunset ()関数の紹介

date_sunset()は、PHPの組み込み関数です。与えられた緯度と経度、日付、その他のパラメーターに基づいて、場所の日没時間を返すことができます。基本的な使用法は次のとおりです。

 date_sunset(time(), SUNFUNCS_RET_STRING, $latitude, $longitude, 0, 0);

ここで、$緯度$経度は都市の緯度と経度です。 date_sunset()は、この情報に基づいて対応する日没時間を返します。

2。date_sunset ()関数をカプセル化します

Laravelでは、サービスクラスを作成してdate_sunset()関数をカプセル化し、それにより操作を簡素化し、コードの再利用性と保守性を高めることができます。

2.1サービスクラスを作成します

まず、Laravelでは、この関数をカプセル化するためにサービスクラスを作成する必要があります。このサービスクラスは、職人コマンドを介して生成できます。

 php artisan make:service SunsetService

次に、 app/services/sunsetservice.phpファイルにカプセル化ロジックを実装します。

 namespace App\Services;

class SunsetService
{
    /**
     * 街の夕日を迎えてください
     *
     * @param string $cityName 都市名
     * @return string
     */
    public function getSunsetTimeByCity(string $cityName): string
    {
        // 都市名を通して都市の緯度と経度情報を取得する
        $coordinates = $this->getCoordinatesByCity($cityName);

        if (!$coordinates) {
            return '都市情報を取得できません';
        }

        // 日没の時間を取得します
        return date_sunset(time(), SUNFUNCS_RET_STRING, $coordinates['latitude'], $coordinates['longitude'], 0, 0);
    }

    /**
     * 根据都市名获取城市的经纬度
     *
     * @param string $cityName 都市名
     * @return array|null
     */
    private function getCoordinatesByCity(string $cityName)
    {
        // 外部呼び出し API 都市の緯度と経度のデータを取得します
        $url = "https://api.openweathermap.org/data/2.5/weather?q={$cityName}&appid=your_api_key";
        
        // 都市の緯度と経度のデータを取得します
        $response = file_get_contents($url);
        $data = json_decode($response, true);

        // リクエストが成功し、緯度と経度のデータがある場合,緯度と経度に戻ります
        if ($data && isset($data['coord'])) {
            return [
                'latitude' => $data['coord']['lat'],
                'longitude' => $data['coord']['lon']
            ];
        }

        return null;
    }
}

2.2説明

Sunsetservice Serviceクラスでは、2つの主な方法を提供します。

  • GetSunsettimeByCity() :都市の名前を受け取り、都市の夕日を返します。

  • getCoordinatesByCity() :外部API(OpenWeatherMap APIなど)を使用して、都市の名前に基づいて都市の緯度と経度を取得します。

GetCoordinatesByCity()では、OpenWeatherMap APIを使用して、都市の緯度と経度情報を取得します。実際には、 Your_api_keyが自分に適用するAPIキーを置き換える必要があります。

3.サービスを使用するコントローラーを作成します

次に、 Sunsetserviceサービスを呼び出し、結果をフロントエンドに返すためのコントローラーが必要です。以下でコントローラーを生成できます。

 php artisan make:controller SunsetController

次に、 App/http/Controllers/SunsetController.phpでサービスを使用します:

 namespace App\Http\Controllers;

use App\Services\SunsetService;
use Illuminate\Http\Request;

class SunsetController extends Controller
{
    protected $sunsetService;

    public function __construct(SunsetService $sunsetService)
    {
        $this->sunsetService = $sunsetService;
    }

    /**
     * 街の夕日を確認してください
     *
     * @param Request $request
     * @return \Illuminate\Http\Response
     */
    public function getSunsetTime(Request $request)
    {
        $city = $request->get('city', 'Beijing');
        $sunsetTime = $this->sunsetService->getSunsetTimeByCity($city);

        return response()->json([
            'city' => $city,
            'sunset_time' => $sunsetTime
        ]);
    }
}

3.1ルーティング構成

次に、ルート/web.phpにコントローラーのルートを追加します:

 use App\Http\Controllers\SunsetController;

Route::get('/sunset', [SunsetController::class, 'getSunsetTime']);

このルートを通じて、ユーザーはアクセス/サンセット?City =北京を介して北京を介して北京の日没時間を確認できます。

4。テスト

これで、 date_sunset()関数を正常にカプセル化し、都市ごとにサンセットタイムを照会するサービスを作成しました。次のURLにアクセスして、この機能をテストできます。

 http://m66.net/sunset?city=Beijing

返されたJSONデータには、都市の日没時間が含まれます。

要約します

date_sunset()関数をカプセル化することにより、LaravelのCityによるサンセットタイムの照会の関数を簡単に実装できます。キャッシュメカニズムの追加、さまざまな日付クエリのサポートなど、特定のニーズに応じてこのサービスをさらに拡張できます。この記事がLaravelでこの機能を実装する方法をよりよく理解するのに役立つことを願っています。