工匠服務無流明

王林
發布: 2024-07-16 21:21:11
原創
912 人瀏覽過

Artisan Serve no Lumen

Laravel 是 PHP 生態系中目前最常用的框架。但對於那些不認識他的人來說,他們很難知道他還有一個更年輕但同樣有趣的弟弟,叫Lumen。

Lumen 旨在創建 API,事實上,它是一個微框架,其程式碼庫與其前輩非常接近,但有一個重要的區別:Lumen 犧牲了一些功能以提高效能。 .

使用 Lumen 時您會錯過的功能包括:

  • 模板引擎
  • ORM(預設為禁用 Eloquent)
  • 外觀(預設為停用)
  • 會話管理機制
  • 工匠特色

最後一點真正吸引了我的注意,因為 Artisan 中缺少一些功能並不會直接影響應用程式的效能。

如果您從未聽說過 Artisan,那麼值得注意的是,它是一個功能強大的命令列實用程序,可以與 Laravel 或 Lumen 交互,幫助您開發應用程式。

缺乏這些資源直接影響開發者的生產力。

在我第一次接觸 Lumen 時,我錯過了指令:

$ php artisan serve
登入後複製

在沒有「serve」指令的情況下,替代方案是使用 PHP 自己的內建伺服器,使用指令:

$ php -S localhost:8000 -t public/
登入後複製

看似簡單但不切實際。

正是考慮到這一點,為了避免每次上傳伺服器時都鍵入此命令,我進行了必要的調整,以將“serve”命令帶回 Lumen。

讓我們一步一步來。

  1. 建立 ServeCommand.php 文件
<?php

// File: app/Console/Commands/ServeCommand.php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Symfony\Component\Console\Input\InputOption;

class ServeCommand extends Command
{

    protected $name = 'serve';
    protected $description = "Serve the application on the PHP development server";

    public function handle(): void
    {
        $base = $this->laravel->basePath();
        $host = $this->input->getOption('host');
        $port = $this->input->getOption('port');

        $this->info("Lumen development server started on http://{$host}:{$port}/");

        passthru('"' . PHP_BINARY . '"' . " -S {$host}:{$port} -t \"{$base}/public\"");
    }

    protected function getOptions(): array
    {
        $url = env('APP_URL', '');
        $host = parse_url($url, PHP_URL_HOST);
        $port = parse_url($url, PHP_URL_PORT);

        // Defaults
        $host = $host ? $host : 'localhost';
        $port = $port ? $port : 8080;

        return [
            ['host', null, InputOption::VALUE_OPTIONAL, 'The host address to serve the application on.', $host],
            ['port', null, InputOption::VALUE_OPTIONAL, 'The port to serve the application on.', $port],
        ];
    }

}

登入後複製
  1. 將呼叫包含在 Kernel.php 中
<?php

// File: app/Console/Kernel.php

namespace App\Console;

use Laravel\Lumen\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel
{
    protected $commands = [
        // Add Support to Artisan Serve
        Commands\ServeCommand::class,
    ];
}

登入後複製

準備好了!現在就用它吧。

$ php artisan serve 
登入後複製
Lumen development server started on http://localhost:8080/
[Mon Sep 27 19:38:07 2021] PHP 8.1.0RC2 Development Server (http://localhost:8080) started
登入後複製

以上是工匠服務無流明的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!