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.
Ciri -ciri Utama:
Persediaan dan Konfigurasi:
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__.'/../');
$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'); }); }
php artisan migrate
Routing:
Tentukan laluan dalam: app/routes.php
$app->get('/{type?}', 'HomeController@index'); // {type?} allows optional parameter
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) ... } }
: app/Console/Kernel.php
protected $commands = [ 'App\Console\Commands\UpdateNewsItems', ]; protected function schedule(Schedule $schedule) { $schedule->command('update:news_items')->dailyAt('19:57'); }
dengan jalan sebenar anda): /path/to/hn-reader
* * * * * php /path/to/hn-reader/artisan schedule:run >> /dev/null 2>&1
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')); } }
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!