In diesem Leitfaden gehen wir die Schritte durch, um ein einfaches PHP-Projekt zu erstellen, das die Pokémon-API mit dem Flight-Framework und zusätzlichen Paketen wie Zebra_cURL und Latte verwendet. Wir werden uns mit der Einrichtung des Projekts, dem Hinzufügen von Routen und dem Rendern von Ansichten befassen.
tl;dr: Es ist nicht schwer, ein einfaches API-basiertes Projekt in Flight zu erstellen. Sehen Sie sich den in diesem Handbuch verwendeten Code an.
Zuerst müssen wir einen neuen Projektordner einrichten. Öffnen Sie Ihr Terminal, navigieren Sie zum gewünschten Speicherort und führen Sie die folgenden Befehle aus, um ein neues Verzeichnis zu erstellen und es einzugeben.
mkdir flight-pokeapi cd flight-pokeapi
Bevor wir uns mit dem Code befassen, müssen wir sicherstellen, dass Composer installiert ist. Composer ist der Abhängigkeitsmanager für PHP und hilft uns, die notwendigen Bibliotheken einzubinden.
Wenn Sie Composer nicht installiert haben, können Sie es wie folgt installieren:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php composer-setup.php php -r "unlink('composer-setup.php');"
Da Composer nun in einer aktuellen Datei namens ./composer.phar installiert ist, verwalten wir unsere Abhängigkeiten.
Um die erforderlichen Pakete zu verwalten, müssen wir sie nur mit Composer hinzufügen.
./composer.phar require flightphp/core stefangabos/zebra_curl latte/latte
Dadurch wird Folgendes installiert:
Als nächstes erstellen wir den Einstiegspunkt für unsere Anwendung: public/index.php. Diese Datei richtet unsere App ein, konfiguriert Routen und übernimmt das Rendern von Ansichten.
Erstellen Sie das öffentliche Verzeichnis und die Datei index.php:
mkdir public touch public/index.php
Fügen Sie nun den folgenden Inhalt zu index.php hinzu:
<?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();
In dieser Datei:
Wenn Sie dieses Setup testen möchten, können Sie einen PHP-Server aus dem öffentlichen Verzeichnis starten:
php -S localhost:8000 -t public/
Besuchen Sie nun http://localhost:8000/ in Ihrem Browser und Sie sollten „Hallo Welt!“ sehen. Cool, oder?
Da wir nun eine grundlegende Route eingerichtet haben, fügen wir eine komplexere Route hinzu, die die Pokémon-API verwendet. Aktualisieren Sie public/index.php, um den folgenden Code einzuschließen:
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 ]); }); });
Da wir nun Daten abrufen, richten wir Ansichten ein, um sie anzuzeigen. Erstellen Sie das Ansichtenverzeichnis und fügen Sie eine Latte-Vorlagendatei zur Anzeige der Pokémon-Typen hinzu.
mkdir views touch views/home.latte
Fügen Sie den folgenden Code zu „views/home.latte“ hinzu:
<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>
In dieser Datei:
Wenn Sie jetzt /pokemon aufrufen, wird eine Liste aller Pokémon-Typen angezeigt!
Erweitern wir unsere Pokémon-Routen, um mehr Details zu bestimmten Typen und einzelnen Pokémon abzurufen. Fügen Sie die folgenden Routen zu Ihrer /pokemon-Gruppe hinzu:
// 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 ]); });
Auf dieser Route:
Als nächstes erstellen Sie die type.latte-Ansicht:
touch views/type.latte
Fügen Sie den folgenden Inhalt zu type.latte hinzu:
<h1>{$type|firstUpper}</h1> <ul> {foreach $pokemons as $pokemon} <li><a href="/pokemon/{$pokemon->id}">{$pokemon->name|firstUpper}</a></li> {/foreach} </ul>
Diese Vorlage zeigt den Namen jedes Pokémon an, das einem bestimmten Typ zugeordnet ist.
Zu diesem Zeitpunkt haben Sie einen grundlegenden Pokémon-API-Konsumenten eingerichtet, der Flight PHP, Zebra_cURL für API-Anfragen und Latte für das Rendern von Ansichten verwendet. Sie können dieses Projekt weiter ausbauen, indem Sie weitere Routen hinzufügen und die Vorlagen verfeinern.
Um Ihr Projekt anzuzeigen, starten Sie den PHP-Server aus dem öffentlichen Verzeichnis:
php -S localhost:8000 -t public/
Besuchen Sie nun http://localhost:8000/pokemon in Ihrem Browser und Sie sollten eine Liste der Pokémon-Typen sehen.
Wenn Sie Hilfe benötigen oder auf Probleme stoßen, können Sie den vollständigen Code in Github überprüfen, um zu sehen, wo Sie möglicherweise einen Fehltritt gemacht haben.
Hoffentlich hat Ihnen dieses kleine Tutorial gefallen. Wenn Sie Fragen haben oder Hilfe benötigen, können Sie diese gerne in den Kommentaren unten stellen. Viel Spaß beim Codieren!
Das obige ist der detaillierte Inhalt vonErstellen einer Pokémon-API in PHP: Ein Leitfaden für Anfänger. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!