Artisan Serve no Lumen

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 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
Enter fullscreen mode
Exit fullscreen mode

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/
Enter fullscreen mode
Exit fullscreen mode

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], ]; } } 
Enter fullscreen mode
Exit fullscreen mode
  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, ];
} 
Enter fullscreen mode
Exit fullscreen mode

Pronto!! Agora é só usar.

$ php artisan serve 
Enter fullscreen mode
Exit fullscreen mode
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
Enter fullscreen mode
Exit fullscreen mode

Discover more from Coursity

Subscribe to get the latest posts sent to your email.

Comments

No comments yet. Why don’t you start the discussion?

    Leave a Reply

    Your email address will not be published. Required fields are marked *