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.
- 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],
];
}
}
- 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
Top comments (0)