PHP は、人気のあるバックエンド プログラミング言語として、Web 開発の分野で広く普及しています。天気予報機能は Web アプリケーションの一般的なシナリオであり、PHP ベースの天気予報機能の実装は比較的シンプルで理解しやすいです。この記事ではPHPを使って天気予報機能を実装する方法を紹介します。
1. 気象データの取得 API
天気予報機能を実装するには、まず気象データを取得する必要があります。サードパーティの気象 API を使用して、リアルタイムの正確な気象データを取得できます。現在、中国で主流の天気APIプロバイダーには、無料の「新芝天気」と有料の「Aggregation Data Weather」があります。
新芝天気を例に挙げると、まず公式 Web サイトで開発者アカウントを申請し、無料の API キーを取得します。開発者アカウントの登録は無料で、デフォルトでは各アカウントで 1 日あたり 1,000 回の無料通話が可能です。
Xinzhi Weather は、リアルタイム天気、時間ごとの天気、毎日の天気など、さまざまな種類の API を提供します。実際のニーズに応じて、対応する API を選択するだけです。この記事では、リアルタイム天気 API を使用して現在の気象データを取得することを選択します。
2. JSON 形式のデータを解析する
Xinzhi Weather から返される気象データは、JSON 形式で返されます。したがって、JSON 形式のデータを解析する方法を学ぶ必要があります。
PHP では、組み込み関数 json_decode() を使用して、JSON 形式のデータをオブジェクトまたは配列に変換できます。例:
$json_string = '{"name":"Peter","age":21,"city":"New York"}'; $data = json_decode($json_string); echo $data->name;
上記のコードでは、JSON 形式の文字列をオブジェクト $data に変換し、その name 属性の値「Peter」を出力します。
JSON データをオブジェクトに変換せずに配列に変換したい場合は、 json_decode() 関数の 2 番目のパラメーターを true に設定できます。例:
$json_string = '{"name":"Peter","age":21,"city":"New York"}'; $data = json_decode($json_string, true); echo $data['name'];
3. CURL を使用してデータを取得する
API サーバーからデータを取得するには、PHP の CURL ライブラリを使用できます。 CURL は HTTP プロトコルに基づくファイル転送プロトコルで、Web サーバーとの対話、データの送受信によく使用されます。
PHP では、curl_init() 関数を使用して CURL セッションを初期化し、curl_setopt() 関数を使用してリクエスト URL、リクエスト メソッド、リクエスト ヘッダー情報、リクエスト本文などのいくつかのパラメータを設定できます。データなど最後に、curl_exec() 関数を使用して CURL セッションを実行し、サーバーから返されたデータを取得します。
たとえば、次のコードは、CURL を使用して Xinzhi Weather API からリアルタイムの気象データを取得する例です。
$url = 'https://api.seniverse.com/v3/weather/now.json'; $params = [ 'key' => 'your-api-key', // 替换成你自己的API key 'location' => '北京', 'language' => 'zh-Hans', 'unit' => 'c' ]; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url . '?' . http_build_query($params)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); $data = json_decode($response, true); echo '当前城市:' . $data['results'][0]['location']['name'] . '<br>'; echo '当前温度:' . $data['results'][0]['now']['temperature'] . '℃<br>'; echo '天气状况:' . $data['results'][0]['now']['text'];
上記のコードでは、http_build_query() 関数を使用します。パラメータ配列を変換するのは、リクエストパラメータを API サーバーに送信するための URL 内のクエリ文字列です。次に、json_decode() 関数を使用して、サーバーから返された JSON 形式のデータを配列に解析し、最後に都市、気温、気象条件の情報を出力します。
4. テンプレート構文を使用してデータを出力する
気象データを取得したら、それをフロントエンド ページにレンダリングする必要があります。データをフロントエンド ページから分離するには、PHP のテンプレート エンジンを使用してこれを実現できます。
一般的な PHP テンプレート エンジンには、Smarty、Blade、Twig などが含まれます。ここでは、Blade を例として、気象データをフロントエンド ページにレンダリングする方法を紹介します。
まず、気象データを表示するためのプレースホルダーを Blade テンプレートに定義します。例:
<div class="weather"> <p>当前城市:{{ $city }}</p> <p>当前温度:{{ $temperature }}℃</p> <p>天气状况:{{ $text }}</p> </div>
次に、取得した気象データを PHP コード内のプレースホルダーに出力します。例:
$data = json_decode($response, true); $view = new JenssegersBladeBlade(__DIR__.'/views', __DIR__.'/cache'); echo $view->make('weather', [ 'city' => $data['results'][0]['location']['name'], 'temperature' => $data['results'][0]['now']['temperature'], 'text' => $data['results'][0]['now']['text'], ])->render();
上記のコードでは、最初に Blade のコンストラクターを使用してビュー オブジェクト $view を作成します。コンストラクターのパラメータのうち、最初のパラメータはビュー フォルダへのパス、2 番目のパラメータはキャッシュ フォルダへのパスです。
次に、ビュー オブジェクトの make() メソッドを使用して、ビュー ファイル名とレンダリングされるデータを渡し、ビュー インスタンスを生成します。最後に、ビュー インスタンスの render() メソッドを使用して、ビューのコンテンツが出力されます。
5. 完全なコード例
最後に、上記のコードを完全な PHP ファイルに統合して、天気予報機能を実装します。完全なコードは次のとおりです。
<?php require_once 'vendor/autoload.php'; $url = 'https://api.seniverse.com/v3/weather/now.json'; $params = [ 'key' => 'your-api-key', // 替换成你自己的API key 'location' => '北京', 'language' => 'zh-Hans', 'unit' => 'c' ]; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url . '?' . http_build_query($params)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); $data = json_decode($response, true); $view = new JenssegersBladeBlade(__DIR__.'/views', __DIR__.'/cache'); echo $view->make('weather', [ 'city' => $data['results'][0]['location']['name'], 'temperature' => $data['results'][0]['now']['temperature'], 'text' => $data['results'][0]['now']['text'], ])->render();
このサンプル コードでは、vendor/autoload.php ファイルを通じて Blade テンプレート エンジンの依存関係を導入します。気象データをレンダリングするためのプレースホルダーを含むブレード テンプレートをビュー フォルダーに作成します。最後に、ビュー オブジェクトを通じてデータをテンプレートに渡し、最終的な天気予報ページをレンダリングします。
6. 結論
PHP を使用して天気予報機能を実装することは、Web 開発の一般的な要件です。サードパーティの気象 API を利用すると、気象データを簡単に取得できます。次に、CURL ライブラリを使用してデータを取得し、json_decode() 関数を使用してデータを解析し、Blade テンプレート エンジンを使用してデータを出力することで、天気予報機能を完全に実現できます。上記の手順は少し面倒ですが、一度マスターすれば比較的簡単に始めることができます。
以上がPHPを使って天気予報機能を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。