Laravel 是 PHP 生態系中目前最常用的框架。但對於那些不認識他的人來說,他們很難知道他還有一個更年輕但同樣有趣的弟弟,叫Lumen。
Lumen 旨在創建 API,事實上,它是一個微框架,其程式碼庫與其前輩非常接近,但有一個重要的區別:Lumen 犧牲了一些功能以提高效能。 .
使用 Lumen 時您會錯過的功能包括:
最後一點真正吸引了我的注意,因為 Artisan 中缺少一些功能並不會直接影響應用程式的效能。
如果您從未聽說過 Artisan,那麼值得注意的是,它是一個功能強大的命令列實用程序,可以與 Laravel 或 Lumen 交互,幫助您開發應用程式。
缺乏這些資源直接影響開發者的生產力。
在我第一次接觸 Lumen 時,我錯過了指令:
$ php artisan serve
在沒有「serve」指令的情況下,替代方案是使用 PHP 自己的內建伺服器,使用指令:
$ php -S localhost:8000 -t public/
看似簡單但不切實際。
正是考慮到這一點,為了避免每次上傳伺服器時都鍵入此命令,我進行了必要的調整,以將“serve”命令帶回 Lumen。
讓我們一步一步來。
<?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], ]; } }
<?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中文網其他相關文章!