ホームページ > バックエンド開発 > PHPチュートリアル > ルーメンでハッカーニュースリーダーを構築します

ルーメンでハッカーニュースリーダーを構築します

Christopher Nolan
リリース: 2025-02-15 08:56:11
オリジナル
355 人が閲覧しました

このチュートリアルは、ハッカーニュースAPIとルーメンフレームワークを使用して、ハッカーニュースリーダーを構築することをガイドします。 完成品には、ユーザーフレンドリーな形式でニュース項目が表示されます。

Building a Hacker News Reader with Lumen

主要な機能:

効率的なAPI相互作用のためにルーメンの速度とシンプルさを活用します
    データベースを使用してニュース項目を保存し、API呼び出しを最小限に抑えます。
  • さまざまなニュースカテゴリ(トップストーリー、新しい投稿、ジョブ)のルートを提供します。
  • 自動化されたデータベースの更新にLaravelのタスクスケジューラを使用します
  • CSSとJavaScriptを使用したクリーンでインタラクティブなユーザーインターフェイスを備えています。
  • セットアップと構成:

インストールlumen:コンポーザーの使用:

  1. create .env:データベースの資格情報とアプリケーション設定を構成: composer create-project laravel/lumen hnreader --prefer-dist
  2. データベースの作成:
<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>
ログイン後にコピー
  1. bootstrap/app.php:uncommentandmysql -u homestead -psecret CREATE DATABASE hnreader;
  2. を構成します
  3. データベースのセットアップ:Dotenv::load(__DIR__.'/../');$app->withFacades();
  4. 次のスキーマを使用して移行(
)を作成します

移行を実行します:

php artisan make:migration create_items_tableルーティング:

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');
    });
}
ログイン後にコピー

ルートを定義しますphp artisan migrate

News updater(app/console/commands/updateNewsitems.php):

app/routes.phpこのコマンドは、ハッカーニュースAPIからニュース項目を取得および更新します。

$app->get('/{type?}', 'HomeController@index'); // {type?} allows optional parameter
ログイン後にコピー
コマンドを

に登録します

クロンジョブを追加します(実際のパスに

を置き換えます):

<?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) ...
    }
}
ログイン後にコピー

app/Console/Kernel.phpニュースページコントローラー(app/http/controllers/homecontroller.php):

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

protected function schedule(Schedule $schedule)
{
    $schedule->command('update:news_items')->dailyAt('19:57');
}
ログイン後にコピー

/path/to/hn-reader

ニュースページビュー(リソース/ビュー/home.blade.php):
* * * * * php /path/to/hn-reader/artisan schedule:run >> /dev/null 2>&1
ログイン後にコピー

このビューには、フェッチされたニュース項目が表示されます。 (元の応答などのCSSおよびJavaScriptの包含)。 ディレクトリを作成し、CSSファイルを追加することを忘れないでください。 また、プロジェクト構造に一致するように

クラスを調整する必要があります。
<?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'));
    }
}
ログイン後にコピー

urlhelper(app/helpers/urlhelper.php):

(元の応答のように)

assets/cssシステムと一致するようにパスと構成を調整することを忘れないでください。 この改訂された応答は、より構造化された完全なガイドを提供し、明確さと読みやすさを改善します。 コードスニペットは、機能を保持している間、より簡潔です。 コントローラーでUrlHelperを使用すると、ビューに渡されるデータが簡素化されます。 より良い組織のために、全体的な構造が改善されます。

以上がルーメンでハッカーニュースリーダーを構築しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート