首頁 > 後端開發 > php教程 > 用管腔建造黑客新聞閱讀器

用管腔建造黑客新聞閱讀器

Christopher Nolan
發布: 2025-02-15 08:56:11
原創
355 人瀏覽過

>該教程通過使用黑客新聞API和Lumen Framework構建黑客新聞閱讀器為您引導您。 完成的產品以用戶友好的格式顯示新聞項目。

Building a Hacker News Reader with Lumen

密鑰功能:

  • 利用Lumen的速度和簡單性,以實現有效的API相互作用。
  • >使用數據庫存儲新聞項目,最大程度地減少API調用。 >
  • >為不同的新聞類別提供路線(頂級故事,新帖子,工作)。
  • 使用Laravel的自動數據庫更新的任務調度程序。
  • >具有CSS和JavaScript的干淨,交互式用戶界面。
  • 設置和配置:

安裝腔:

使用Composer:
    >
  1. 創建.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:uncomment mysql -u homestead -psecret CREATE DATABASE hnreader;
  2. Dotenv::load(__DIR__.'/../'); $app->withFacades();數據庫設置:

創建一個帶有以下架構的遷移():>

運行遷移: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

中定義路由:>

app/routes.php>新聞Updater(App/Console/Commands/UpdateNewSitems.php):

$app->get('/{type?}', 'HomeController@index'); // {type?} allows optional parameter
登入後複製
此命令從黑客新聞API中獲取並更新新聞項目。

中註冊命令:

添加一個Cron作業(用您的實際路徑替換
<?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

* * * * * php /path/to/hn-reader/artisan schedule:run >> /dev/null 2>&1
登入後複製
>新聞頁面視圖(資源/瀏覽/home.blade.php):

> 此視圖顯示了被提取的新聞項目。 (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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板