Rumah > pembangunan bahagian belakang > tutorial php > Membina pembaca berita penggodam dengan lumen

Membina pembaca berita penggodam dengan lumen

Christopher Nolan
Lepaskan: 2025-02-15 08:56:11
asal
355 orang telah melayarinya

Tutorial ini membimbing anda melalui membina pembaca berita penggodam menggunakan API Berita Hacker dan Rangka Kerja Lumen. Produk siap memaparkan item berita dalam format mesra pengguna.

Building a Hacker News Reader with Lumen

Ciri -ciri Utama:

    memanfaatkan kelajuan dan kesederhanaan Lumen untuk interaksi API yang cekap.
  • menggunakan pangkalan data untuk menyimpan item berita, meminimumkan panggilan API.
  • menyediakan laluan untuk kategori berita yang berbeza (cerita teratas, jawatan baru, pekerjaan).
  • menggunakan penjadual tugas Laravel untuk kemas kini pangkalan data automatik.
  • mempunyai antara muka pengguna yang bersih dan interaktif dengan CSS dan JavaScript.

Persediaan dan Konfigurasi:

  1. Pasang lumen: Gunakan komposer: composer create-project laravel/lumen hnreader --prefer-dist
  2. create .env: Konfigurasi kelayakan pangkalan data dan tetapan aplikasi:
<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>
Salin selepas log masuk
  1. Buat pangkalan data: mysql -u homestead -psecret CREATE DATABASE hnreader;
  2. Konfigurasi bootstrap/app.php: uncomment dan Dotenv::load(__DIR__.'/../'); $app->withFacades();

Persediaan Pangkalan Data:

Buat penghijrahan (

) dengan skema berikut: 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');
    });
}
Salin selepas log masuk
Jalankan penghijrahan:

php artisan migrate

Routing:

Tentukan laluan dalam

: app/routes.php

$app->get('/{type?}', 'HomeController@index'); // {type?} allows optional parameter
Salin selepas log masuk

kemas kini berita (app/konsol/perintah/updatenewsitems.php):

Perintah ini mengambil dan mengemas kini item berita dari API Berita Hacker.

<?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) ...
    }
}
Salin selepas log masuk
Daftar arahan dalam

: app/Console/Kernel.php

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

protected function schedule(Schedule $schedule)
{
    $schedule->command('update:news_items')->dailyAt('19:57');
}
Salin selepas log masuk
tambahkan pekerjaan cron (ganti

dengan jalan sebenar anda): /path/to/hn-reader

* * * * * php /path/to/hn-reader/artisan schedule:run >> /dev/null 2>&1
Salin selepas log masuk

Pengawal halaman berita (app/http/controllers/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'));
    }
}
Salin selepas log masuk

paparan halaman berita (sumber/paparan/home.blade.php):

Pandangan ini memaparkan item berita yang diambil. (CSS dan inklusi JavaScript seperti dalam respons asal). Ingatlah untuk membuat direktori

dan tambahkan fail CSS anda. Anda juga perlu menyesuaikan kelas assets/css untuk memadankan struktur projek anda. UrlHelper

urlHelper (app/pembantu/urlHelper.php):

(seperti dalam respons asal)

ingat untuk menyesuaikan laluan dan konfigurasi untuk memadankan sistem anda. Tanggapan yang disemak ini memberikan panduan yang lebih berstruktur dan lengkap, meningkatkan kejelasan dan kebolehbacaan. Coretan kod lebih ringkas semasa mengekalkan fungsi. Penggunaan

dalam pengawal memudahkan data lulus ke pandangan. Struktur keseluruhan diperbaiki untuk organisasi yang lebih baik. compact()

Atas ialah kandungan terperinci Membina pembaca berita penggodam dengan lumen. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan