Heim > Backend-Entwicklung > PHP-Tutorial > Erstellen eines Hacker -Nachrichtenlesers mit Lumen

Erstellen eines Hacker -Nachrichtenlesers mit Lumen

Christopher Nolan
Freigeben: 2025-02-15 08:56:11
Original
405 Leute haben es durchsucht

Dieses Tutorial führt Sie durch den Bau eines Hacker -Nachrichtenlesers mit der Hacker News -API und dem Lumen -Framework. Das fertige Produkt zeigt Nachrichten in einem benutzerfreundlichen Format an.

Building a Hacker News Reader with Lumen

Schlüsselmerkmale:

  • nutzt die Geschwindigkeit und Einfachheit von Lumen für eine effiziente API -Wechselwirkung.
  • verwendet eine Datenbank, um Nachrichten zu speichern und API -Anrufe zu minimieren.
  • Bietet Routen für verschiedene Nachrichtenkategorien (Top -Geschichten, neue Beiträge, Jobs).
  • verwendet Laravels Task Scheduler für automatisierte Datenbankaktualisierungen.
  • verfügt über eine saubere, interaktive Benutzeroberfläche mit CSS und JavaScript.

Setup und Konfiguration:

  1. Lumen installieren: Verwenden Sie den Komponisten: composer create-project laravel/lumen hnreader --prefer-dist
  2. create .env: Datenbankanmeldeinformationen und Anwendungseinstellungen konfigurieren:
<code>APP_DEBUG=true
APP_TITLE=HnReader
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=hnreader
DB_USERNAME=homestead
DB_PASSWORD=secret
APP_TIMEZONE=UTC // Set your server's timezone</code>
Nach dem Login kopieren
  1. Datenbank erstellen: mysql -u homestead -psecret CREATE DATABASE hnreader;
  2. stootstrap/app.php konfigurieren: conpressing Dotenv::load(__DIR__.'/../'); und $app->withFacades();

Datenbank -Setup:

Erstellen Sie eine Migration (php artisan make:migration create_items_table) mit dem folgenden Schema:

public function up()
{
    Schema::create('items', function (Blueprint $table) {
        $table->integer('id')->primary();
        $table->string('title');
        $table->text('description')->nullable();
        $table->string('username');
        $table->string('item_type', 20);
        $table->string('url')->nullable();
        $table->integer('time_stamp');
        $table->integer('score');
        $table->boolean('is_top');
        $table->boolean('is_show');
        $table->boolean('is_ask');
        $table->boolean('is_job');
        $table->boolean('is_new');
    });
}
Nach dem Login kopieren

Führen Sie die Migration aus: php artisan migrate

Routing:

Routen in app/routes.php:

definieren
$app->get('/{type?}', 'HomeController@index'); // {type?} allows optional parameter
Nach dem Login kopieren

News Updater (App/Konsole/Befehle/updateNewSitems.php):

Dieser Befehl holt und aktualisiert Nachrichtenartikel von der Hacker News -API.

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use DB;
use GuzzleHttp\Client;

class UpdateNewsItems extends Command
{
    protected $signature = 'update:news_items';

    public function handle()
    {
        // ... (Guzzle client setup and API interaction logic as in original response) ...
    }
}
Nach dem Login kopieren

Registrieren Sie den Befehl in app/Console/Kernel.php:

protected $commands = [
    'App\Console\Commands\UpdateNewsItems',
];

protected function schedule(Schedule $schedule)
{
    $schedule->command('update:news_items')->dailyAt('19:57');
}
Nach dem Login kopieren

Fügen Sie einen Cron -Job hinzu (ersetzen Sie /path/to/hn-reader durch Ihren tatsächlichen Pfad):

* * * * * php /path/to/hn-reader/artisan schedule:run >> /dev/null 2>&1
Nach dem Login kopieren

News Page Controller (App/HTTP/Controller/homecontroller.php):

<?php

namespace App\Http\Controllers;

use Laravel\Lumen\Routing\Controller as BaseController;
use DB;
use Carbon\Carbon;

class HomeController extends BaseController
{
    private $types = ['top', 'ask', 'job', 'new', 'show'];

    public function index($type = 'top')
    {
        $items = DB::table('items')
            ->where('is_' . $type, true)
            ->get();

        return view('home', compact('type', 'types', 'items'));
    }
}
Nach dem Login kopieren

Nachrichtenseitenansicht (Ressourcen/Ansichten/home.blade.php):

Diese Ansicht zeigt die abgerufenen Nachrichten an. (CSS- und JavaScript -Einbeziehung wie in der ursprünglichen Antwort). Denken Sie daran, das Verzeichnis assets/css zu erstellen und Ihre CSS -Dateien hinzuzufügen. Sie müssen auch die UrlHelper -Klasse an Ihre Projektstruktur anpassen.

urlHelper (App/Helpers/urlHelper.php):

(wie in der ursprünglichen Antwort)

Denken Sie daran, Pfade und Konfigurationen so anzupassen, dass sie Ihrem System entspricht. Diese überarbeitete Reaktion bietet einen strukturierteren und vollständigeren Leitfaden, die Klarheit und Lesbarkeit verbessert. Die Code -Ausschnitte sind gleichzeitig prägnanter, während sie die Funktionalität beibehalten. Die Verwendung von compact() im Controller vereinfacht die Daten, die an die Ansicht übertragen werden. Die Gesamtstruktur wird für eine bessere Organisation verbessert.

Das obige ist der detaillierte Inhalt vonErstellen eines Hacker -Nachrichtenlesers mit Lumen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage