このガイドでは、Pokémon API と Flight フレームワークおよび Zebra_cURL や Latte などの追加パッケージを使用する基本的な PHP プロジェクトを作成する手順を説明します。プロジェクトのセットアップ、ルートの追加、ビューのレンダリングについて説明します。
tl;dr: Flight で単純な API ベースのプロジェクトを作成するのは難しくありません。このガイドで使用されているコードを確認してください。
まず、新しいプロジェクト フォルダーを設定する必要があります。ターミナルを開き、目的の場所に移動し、次のコマンドを実行して新しいディレクトリを作成し、そこに入ります。
mkdir flight-pokeapi cd flight-pokeapi
コードに入る前に、Composer がインストールされていることを確認する必要があります。 Composer は PHP の依存関係マネージャーであり、必要なライブラリを含めるのに役立ちます。
Composer がインストールされていない場合は、次のコマンドを使用してインストールできます。
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php composer-setup.php php -r "unlink('composer-setup.php');"
Composer が ./composer.phar という現在のファイルにインストールされたので、依存関係を管理しましょう。
必要なパッケージを管理するには、composer を使用してパッケージを追加するだけです。
./composer.phar require flightphp/core stefangabos/zebra_curl latte/latte
これによりインストールされます:
次に、アプリケーションのエントリ ポイント、public/index.php を作成しましょう。このファイルはアプリをセットアップし、ルートを構成し、ビューのレンダリングを処理します。
パブリックディレクトリとindex.phpファイルを作成します:
mkdir public touch public/index.php
次に、次のコンテンツをindex.phpに追加します:
<?php use flight\net\Router; use Latte\Engine; require __DIR__ . '/../vendor/autoload.php'; // Autoload the installed packages // Setup Latte for view rendering $Latte = new Engine; $Latte->setTempDirectory(__DIR__ . '/../temp'); Flight::map('render', function(string $template_path, array $data = []) use ($Latte) { $Latte->render(__DIR__ . '/../views/' . $template_path, $data); }); // Setup Zebra_cURL for handling HTTP requests $Curl = new Zebra_cURL(); $Curl->cache(__DIR__ . '/../temp'); Flight::map('curl', function() use ($Curl) { return $Curl; }); // Define a simple route Flight::route('/', function() { echo 'hello world!'; }); Flight::start();
このファイル内:
この設定をテストしたい場合は、パブリック ディレクトリから PHP サーバーを起動できます。
php -S localhost:8000 -t public/
次に、ブラウザで http://localhost:8000/ にアクセスすると、「hello world!」が表示されるはずです。かっこいいですね?
基本的なルートが設定できたので、Pokémon API を使用するより複雑なルートを追加しましょう。 public/index.php を更新して次のコードを含めます:
Flight::group('/pokemon', function(Router $router) { // Route to list all Pokémon types $router->get('/', function() { $types_response = json_decode(Flight::curl()->scrap('https://pokeapi.co/api/v2/type/', true)); $results = []; while ($types_response->next) { $results = array_merge($results, $types_response->results); $types_response = json_decode(Flight::curl()->scrap($types_response->next, true)); } $results = array_merge($results, $types_response->results); Flight::render('home.latte', [ 'types' => $results ]); }); });
データを取得したので、それを表示するビューを設定しましょう。 views ディレクトリを作成し、ポケモンのタイプを表示するための Latte テンプレート ファイルを追加します。
mkdir views touch views/home.latte
次のコードを views/home.latte に追加します:
<p>Welcome to the Pokemon World!</p> <p>Types of Pokemon</p> <ul> {foreach $types as $type} <li><a href="/pokemon/type/{$type->name}">{$type->name|firstUpper}</a></li> {/foreach} </ul>
このファイル内:
今、/pokemon にアクセスすると、すべてのポケモンのタイプのリストが表示されます!
ポケモンのルートを拡張して、特定のタイプと個々のポケモンの詳細を取得しましょう。次のルートを /pokemon グループに追加します:
// Route to fetch a specific Pokémon type and list all associated Pokémon $router->get('/type/@type', function(string $type) { $Curl = Flight::curl(); $type_response = json_decode($Curl->scrap('https://pokeapi.co/api/v2/type/' . $type, true)); $pokemon_urls = []; foreach($type_response->pokemon as $pokemon_data) { $pokemon_urls[] = $pokemon_data->pokemon->url; } $pokemon_data = []; // The little & here is important to pass the variable by reference. // In other words it allows us to modify the variable inside the closure. $Curl->get($pokemon_urls, function(stdClass $result) use (&$pokemon_data) { $pokemon_data[] = json_decode($result->body); }); Flight::render('type.latte', [ 'type' => $type_response->name, 'pokemons' => $pokemon_data ]); });
このルートでは、次のことを行います:
次に、type.latte ビューを作成します。
touch views/type.latte
次のコンテンツを type.latte に追加します:
<h1>{$type|firstUpper}</h1> <ul> {foreach $pokemons as $pokemon} <li><a href="/pokemon/{$pokemon->id}">{$pokemon->name|firstUpper}</a></li> {/foreach} </ul>
このテンプレートには、特定のタイプに関連付けられた各ポケモンの名前が表示されます。
この時点で、Flight PHP、API リクエスト用の Zebra_cURL、ビュー レンダリング用の Latte を使用して、基本的な Pokémon API コンシューマーがセットアップされました。さらにルートを追加し、テンプレートを改良することで、このプロジェクトをさらに拡張できます。
プロジェクトを表示するには、パブリック ディレクトリから PHP サーバーを起動します。
php -S localhost:8000 -t public/
ブラウザで http://localhost:8000/pokemon にアクセスすると、ポケモンのタイプのリストが表示されます。
ヘルプが必要な場合や問題が発生した場合は、Github でコード全体をチェックして、どこで間違いを犯したかを確認できます。
この小さなチュートリアルを楽しんでいただければ幸いです。ご質問がある場合やサポートが必要な場合は、以下のコメント欄でお気軽にお問い合わせください。コーディングを楽しんでください!
以上がPHP で Pokémon API を構築する: 初心者ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。