برنامه نویسی

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 ایجاد کردم.

بیایید قدم به قدم پیش برویم.

  1. فایل 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],
        ];
    }

}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  1. تماس را در 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
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا