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:
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.
<?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, ]; }
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!