工匠服务无流明

王林
发布: 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学习者快速成长!