首页 >后端开发 >php教程 >用管腔建造黑客新闻阅读器

用管腔建造黑客新闻阅读器

Christopher Nolan
Christopher Nolan原创
2025-02-15 08:56:11355浏览

>该教程通过使用黑客新闻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

>
<code class="language-php">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');
    });
}</code>

路由:php artisan migrate

中定义路由:>

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

<code class="language-php">$app->get('/{type?}', 'HomeController@index'); // {type?} allows optional parameter</code>
此命令从黑客新闻API中获取并更新新闻项目。

中注册命令:

添加一个Cron作业(用您的实际路径替换
<code class="language-php"><?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) ...
    }
}</code>
):>

app/Console/Kernel.php

>新闻页面控制器(app/http/controllers/homecontroller.php):
<code class="language-php">protected $commands = [
    'App\Console\Commands\UpdateNewsItems',
];

protected function schedule(Schedule $schedule)
{
    $schedule->command('update:news_items')->dailyAt('19:57');
}</code>

> /path/to/hn-reader

<code class="language-bash">* * * * * php /path/to/hn-reader/artisan schedule:run >> /dev/null 2>&1</code>
>新闻页面视图(资源/浏览/home.blade.php):

> 此视图显示了被提取的新闻项目。 (CSS和JavaScript包含在原始响应中)。 切记创建

>目录并添加您的CSS文件。 您还需要调整
<code class="language-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'));
    }
}</code>
类以匹配您的项目结构。

> urlhelper(app/helpers/urlhelper.php):

assets/css(如原始响应中)UrlHelper>

请记住调整路径和配置以匹配您的系统。 这种修订后的响应提供了更具结构化和完整的指南,从而提高了清晰度和可读性。 代码段更简洁,同时保留功能。 在控制器中使用

可以简化传递到视图的数据。 整体结构改善了更好的组织。

以上是用管腔建造黑客新闻阅读器的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn