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.
Schlüsselmerkmale:
Setup und Konfiguration:
composer create-project laravel/lumen hnreader --prefer-dist
<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>
mysql -u homestead -psecret CREATE DATABASE hnreader;
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'); }); }
Führen Sie die Migration aus: php artisan migrate
Routing:
Routen in app/routes.php
:
$app->get('/{type?}', 'HomeController@index'); // {type?} allows optional parameter
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) ... } }
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'); }
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
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')); } }
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!