この記事では、phpのdate_sunset()関数をREST APIにカプセル化する方法について説明します。これにより、他のアプリケーションまたはシステムは、PHPスクリプトを直接実行せずにHTTPリクエストを介して日没時間を取得できます。
PHPのdate_sunset()関数は、指定された場所の日没時間を計算するために使用されます。この関数は、その日の夕日を示すUNIXタイムスタンプを返します。基本的な使用法は次のとおりです。
$timestamp = date_sunset(time(), SUNFUNCS_RET_TIMESTAMP, $latitude, $longitude);
echo "Sunset time: " . date("Y-m-d H:i:s", $timestamp);
上記の例では、 $緯度と$経度は場所の緯度と経度を表し、 sunfuncs_ret_timestampはUNIXタイムスタンプ形式のリターンを表します。
Date_sunset()がREST APIにカプセル化されると、他のアプリケーションに機能を提供し、標準のHTTPリクエストよりも日没時間を取得できるようにします。このアプローチは、PHP環境なしでサンセットタイムデータにアクセスするか、機能を他のサービスに統合するシナリオに適しています。
Slim Frameworkを使用します。これは、Restful APIの構築に特に適した軽量PHPフレームワークです。まず、作曲家依存関係管理ツールが開発環境にインストールされ、スリムなフレームワークがインストールされていることを確認してください。
作曲家からスリムなフレームワークをインストールします。
composer require slim/slim:"4.*"
composer require slim/psr7
次に、 date_sunset()関数をAPIにカプセル化する単純なPHPスクリプトを作成します。
<?php
require 'vendor/autoload.php';
use Slim\Factory\AppFactory;
$app = AppFactory::create();
// aを定義します REST API ルーティング
$app->get('/sunset', function ($request, $response, $args) {
// リクエストパラメーターを取得します
$latitude = $request->getQueryParams()['latitude'] ?? 0;
$longitude = $request->getQueryParams()['longitude'] ?? 0;
// 効果的な緯度と経度を確保します
if (!is_numeric($latitude) || !is_numeric($longitude)) {
$response->getBody()->write(json_encode(['error' => 'Invalid latitude or longitude']));
return $response->withStatus(400)->withHeader('Content-Type', 'application/json');
}
// 日没の時間を取得します
$timestamp = date_sunset(time(), SUNFUNCS_RET_TIMESTAMP, $latitude, $longitude);
// フォーマット出力
$dateTime = date("Y-m-d H:i:s", $timestamp);
// 戻る JSON 応答
$response->getBody()->write(json_encode(['sunset' => $dateTime]));
return $response->withHeader('Content-Type', 'application/json');
});
// アプリケーションを実行します
$app->run();
このコードスニペットでは、スリムなフレームワークを使用して、クエリパラメーターとして緯度と経度を受け入れる単純なREST APIルート/サンセットを作成し、サンセットタイムを計算して返します。返される結果は、計算された日没時間を含むJSON形式です。
PHPスクリプトを開始した後、次のURLを介してAPIをテストできます。
http://m66.net/sunset?latitude=34.0522&longitude=-118.2437
これにより、以下と同様のJSON応答が返されます。
{
"sunset": "2025-04-26 19:42:00"
}
このAPIを本番環境に展開する場合は、PHP対応サーバーでホストするか、クラウドサービス(AWS、Herokuなど)を使用することを選択できます。このAPIは、サーバーがPHPおよびHTTPリクエストをサポートする限り実行できます。
このAPIを必要に応じて拡張できます。たとえば、日付などのクエリパラメーターを追加したり、さまざまな形式(UNIXタイムスタンプやUTC時間など)のデータを返したり、認証メカニズムを介してAPIを保護して、認証メカニズムを使用して、承認されたユーザーが呼び出すことができるようにします。