Artisan Serve no Lumen

Laravel é o framework atualmente mais utilizado dentro do ecossistema PHP. Mas para quem não o conhece, dificilmente saberá que ele possui um irmão mais novo, mas não menos interessante, chamado Lumen.

O Lumen é voltado para criação de APIs. Na verdad…


This content originally appeared on DEV Community and was authored by Rafael Neri

Laravel é o framework atualmente mais utilizado dentro do ecossistema PHP. Mas para quem não o conhece, dificilmente saberá que ele possui um irmão mais novo, mas não menos interessante, chamado Lumen.

O Lumen é voltado para criação de APIs. Na verdade trata-se de um micro-framework com o codebase bem próximo do seu irmão mais velho, mas com uma diferença importante, o Lumen sacrifica alguns recursos em prol de um melhor desempenho.

Entre os recursos que você sentirá falta na utilização do Lumen estão:

  • Engine de template
  • ORM (Eloquent vem desabilitado por padrão)
  • Facades (Desabilitado por padrão)
  • Mecanismo de gerenciamento de sessão
  • Recursos do Artisan

O último ponto foi o que realmente me chamou atenção pois a falta de alguns recursos no Artisan não impactam diretamente no desempenho da aplicação.

Se você nunca ouviu falar do Artisan é interessante frisar que este se trata de um poderoso utilitário de linha de comando que interage com o Laravel ou Lumen auxiliando-o no desenvolvimento de suas aplicações.

A ausência desses recursos impactam diretamente na produtividade dos desenvolvedores.

Logo no meu primeiro contato com o Lumen senti falta do comando:

$ php artisan serve

A ausência do comando "serve" tem como alternativa a utilização do servidor embutido do próprio PHP, através do comando:

$ php -S localhost:8000 -t public/

Aparentemente simples mas nada prático.

E foi pensando nisso, em evitar digitar esse comando toda vez que for subir o servidor, que eu criei o ajuste necessário para trazer o comando "serve" de volta ao Lumen.

Vamos ao passo a passo.

  1. Criar o arquivo 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. Incluir a chamada dentro do 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,
    ];
}

Pronto!! Agora é só usar.

$ 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


This content originally appeared on DEV Community and was authored by Rafael Neri


Print Share Comment Cite Upload Translate Updates
APA

Rafael Neri | Sciencx (2024-06-17T07:13:00+00:00) Artisan Serve no Lumen. Retrieved from https://www.scien.cx/2024/06/17/artisan-serve-no-lumen/

MLA
" » Artisan Serve no Lumen." Rafael Neri | Sciencx - Monday June 17, 2024, https://www.scien.cx/2024/06/17/artisan-serve-no-lumen/
HARVARD
Rafael Neri | Sciencx Monday June 17, 2024 » Artisan Serve no Lumen., viewed ,<https://www.scien.cx/2024/06/17/artisan-serve-no-lumen/>
VANCOUVER
Rafael Neri | Sciencx - » Artisan Serve no Lumen. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2024/06/17/artisan-serve-no-lumen/
CHICAGO
" » Artisan Serve no Lumen." Rafael Neri | Sciencx - Accessed . https://www.scien.cx/2024/06/17/artisan-serve-no-lumen/
IEEE
" » Artisan Serve no Lumen." Rafael Neri | Sciencx [Online]. Available: https://www.scien.cx/2024/06/17/artisan-serve-no-lumen/. [Accessed: ]
rf:citation
» Artisan Serve no Lumen | Rafael Neri | Sciencx | https://www.scien.cx/2024/06/17/artisan-serve-no-lumen/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.