在本指南中,我們將逐步完成建立一個基本 PHP 專案的步驟,該專案將 Pokémon API 與 Flight 框架以及 Zebra_cURL 和 Latte 等附加套件結合使用。我們將探索設定項目、新增路線和渲染視圖。
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。該文件將設定我們的應用程式、配置路由並處理視圖的渲染。
建立public目錄和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 將顯示所有神奇寶貝類型的清單!
讓我們擴展 Pokémon 路線,以獲取特定類型和單一 Pokémon 的更多詳細資訊。將以下路線加入您的 /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,您應該會看到 Pokémon 類型的清單。
Jika anda memerlukan bantuan atau menghadapi masalah, anda boleh menyemak kod penuh dalam Github untuk melihat di mana anda mungkin telah tersilap langkah.
Semoga anda menikmati tutorial kecil ini. Jika anda mempunyai sebarang soalan atau memerlukan bantuan, jangan ragu untuk bertanya dalam komen di bawah. Selamat mengekod!
以上是用 PHP 建立 Pokémon API:初學者指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!