Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Artisan Serve no Lumen

Artisan Serve no Lumen

王林
王林asal
2024-07-16 21:21:11986semak imbas

Artisan Serve no Lumen

Laravel ialah rangka kerja yang paling banyak digunakan pada masa ini dalam ekosistem PHP. Tetapi bagi mereka yang tidak mengenalinya, mereka tidak akan tahu bahawa dia mempunyai seorang yang lebih muda, tetapi tidak kurang menarik, abang yang dipanggil Lumen.

Lumen bertujuan untuk mencipta API Sebenarnya, ia adalah rangka kerja mikro dengan pangkalan kod yang sangat dekat dengan abangnya, tetapi dengan perbezaan penting: Lumen mengorbankan beberapa ciri demi prestasi yang lebih baik. .

Antara ciri yang anda akan terlepas apabila menggunakan Lumen ialah:

  • Enjin templat
  • ORM (Fasih dilumpuhkan secara lalai)
  • Fasad (Dilumpuhkan secara lalai)
  • Mekanisme pengurusan sesi
  • Ciri Artisan

Perkara terakhir ialah perkara yang benar-benar menarik perhatian saya kerana kekurangan beberapa ciri dalam Artisan tidak memberi kesan langsung kepada prestasi aplikasi.

Jika anda tidak pernah mendengar tentang Artisan, sila ambil perhatian bahawa ia adalah utiliti baris perintah yang berkuasa yang berinteraksi dengan Laravel atau Lumen, membantu anda membangunkan aplikasi anda.

Ketiadaan sumber ini secara langsung memberi kesan kepada produktiviti pembangun.

Dalam hubungan pertama saya dengan Lumen, saya terlepas arahan:

$ php artisan serve

Jika tiada arahan "serve", alternatifnya ialah menggunakan pelayan terbina dalam PHP sendiri, menggunakan arahan:

$ php -S localhost:8000 -t public/

Nampak simple tapi tak praktikal.

Dan dengan mengambil kira perkara ini, tentang mengelak daripada menaip arahan ini setiap kali anda memuat naik pelayan, saya membuat pelarasan yang diperlukan untuk membawa kembali arahan "serve" ke Lumen.

Mari kita pergi selangkah demi selangkah.

  1. Buat fail 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. Sertakan panggilan dalam 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,
    ];
}

Sedia!! Sekarang gunakan sahaja.

$ 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

Atas ialah kandungan terperinci Artisan Serve no Lumen. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn