Artisan Serve no Lumen – انجمن DEV

لاراول در حال حاضر پر استفاده ترین فریمورک در اکوسیستم PHP است. اما برای کسانی که او را نمی شناسند، به سختی می دانند که او یک برادر کوچکتر، اما نه کمتر جالب، به نام لومن دارد.
هدف Lumen ایجاد API است ریز چارچوب با پایگاه کد بسیار نزدیک به برادر بزرگتر خود، اما با یک تفاوت مهم، Lumen برخی از ویژگی ها را به نفع عملکرد بهتر قربانی می کند.
از جمله ویژگی هایی که هنگام استفاده از Lumen از دست خواهید داد عبارتند از:
- قالب موتور
- ORM (Eloquent به طور پیش فرض غیرفعال است)
- نماها (به طور پیش فرض غیرفعال است)
- مکانیزم مدیریت جلسات
- ویژگی های صنعتگر
نکته آخر چیزی بود که واقعاً توجه من را به خود جلب کرد زیرا فقدان برخی از ویژگی ها در Artisan تأثیر مستقیمی بر عملکرد برنامه ندارد.
اگر تا به حال نام Artisan را نشنیده اید، شایان ذکر است که این یک ابزار خط فرمان قدرتمند است که با لاراول یا لومن در تعامل است و به شما در توسعه برنامه های کاربردی کمک می کند.
عدم وجود این منابع به طور مستقیم بر بهره وری توسعه دهندگان تأثیر می گذارد.
درست از اولین تماسم با Lumen دستور زیر را از دست دادم:
$ php artisan serve
در غیاب دستور “serve”، جایگزین استفاده از سرور داخلی PHP با استفاده از دستور زیر است:
$ php -S localhost:8000 -t public/
ظاهرا ساده اما کاربردی نیست.
و با در نظر گرفتن این موضوع، در مورد اجتناب از تایپ این دستور هر بار که سرور را آپلود می کنید، تنظیمات لازم را برای بازگرداندن دستور “serve” به Lumen ایجاد کردم.
بیایید قدم به قدم پیش برویم.
- فایل ServeCommand.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],
];
}
}
- تماس را در Kernel.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