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中文网其他相关文章!