ホームページ >バックエンド開発 >PHPチュートリアル >アーティザン・サーブ・ノー・ルーメン

アーティザン・サーブ・ノー・ルーメン

王林
王林オリジナル
2024-07-16 21:21:111006ブラウズ

Artisan Serve no Lumen

Laravel は、PHP エコシステム内で現在最も使用されているフレームワークです。しかし、彼を知らない人にとって、彼にはルーメンという、年下ではあるが同様に興味深い兄弟がいることはほとんど知りません。

実際、

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。