DEV Community

Henrique Weiand
Henrique Weiand

Posted on • Updated on

Lumen: Ensinando comandos para nosso terminal artisan

Ok, já fizemos a configuração do ambiente, já sabemos como subir um projeto lumen pelo docker, agora vamos mexer no lumen de fato?

Para quem esta começando o post por aqui, sugiro que consulte os anteriores também, seguindo por este aqui e o outro anterior
Lumen: Instalando através do Docker

O lumen por default vem o máximo compacto possível para execução das API`s de maneira mais rápida, porem em nosso desenvolvimento precisamos ganhar tempo em questão de uso de alguns recursos, para isso vamos fazer o install de uma lib que nos dará alguns comandos mágicos na questão de agilidade para construção dos scripts que iremos utilizar na sequencia, então vamos la!

Adicionando inteligência1 no nosso terminal para o lumen

A lib open source chamada wn/lumen-generators, nos concede os comandos mágicos, porem, para realizar o install via composer, vamos utilizar nossos conhecimentos sobre docker, para isso, vá na pasta raiz de nosso projeto e vamos executar um comando

docker run --rm --interactive --tty -v $PWD/lumen:/app composer require wn/lumen-generators
Enter fullscreen mode Exit fullscreen mode

O que aconteceu: Baixamos um docker-image pronto do hub do composer, criamos um container provisório e mandamos ele executar na nossa pasta do projeto /lumen o install do lib
wn/lumen-generators - Packagist

Precisamos fazer duas alterações para funcionar de vez, uma delas é no arquivo do projeto lumen que esta no seguinte caminho:

*/lumen/app/Providers/AppServiceProvider.php*
Enter fullscreen mode Exit fullscreen mode

deixe esse arquivo da seguinte maneira



E por seguindo o arquivo

*/lumen/*bootstrap*/app.php*
Enter fullscreen mode Exit fullscreen mode

Neste caso não vou postar o arquivo todo, apenas as áreas a alterar então por primeiro, descomente as seguintes linhas

//$app->withFacades();

//$app->withEloquent();
Enter fullscreen mode Exit fullscreen mode

E depois descomente essa outra linha

//$app->register(*App\Providers\AppServiceProvider*::class);
Enter fullscreen mode Exit fullscreen mode

Feito isso, estamos prontos!

Deixamos o uso de Eloquent assim como das Facades habilitados e colocamos o provider para funcionar onde temos uma regra para identificar a execução quando local para habilitar os comandos do wn/lumen-generators

Abra seu terminal na pasta do projeto lumen, e execute

php artisan
Enter fullscreen mode Exit fullscreen mode

Veja que ganhamos mais uns truques de comandos

Esses caras vão ser beeem importantes para agilizarmos as coisas

Vamos executar alguns comandos para a criação de alguns conteúdos iniciais do nosso projeto:

Trait REST

O *wn/lumen-generators *possui um comando que gera uma trait bastante útil para agilizar o processo de CRUD dentro de algum model, para criarmos então vamos entrar na pasta do projeto /lumen em seu terminal e executar

php artisan wn:controller:rest-actions
Enter fullscreen mode Exit fullscreen mode

Esse cara vai criar um arquivo no seguinte diretório

/lumen/app/Http/Controllers/RESTActions.php
Enter fullscreen mode Exit fullscreen mode

O conteúdo desse cara é o seguinte



Esse script possui métodos automatizados para um CRUD podendo também utilizar o validators do Lumen que veremos posteriormente.

Uma alteração minha

Gosto muito do padrão desta lib, porem em termos de padronização dos resoures do Laravel eu prefiro seguir o que a comunidade utiliza em questão de nomenclatura dos métodos ainda mais que como Trait eles serão utilizados pela class que tal script será adicionado, então para isso vamos mudar o nome dos métodos do script RESTActions.php para os seguintes

public function all = public function index
public function get = public function show
public function add = public function store
public function put = public function update
public function remove = public function destroy
public function respond = public function respond
Enter fullscreen mode Exit fullscreen mode

O único que fica como era é o respond

Vamos encerrando o post por aqui dev. Achei melhor encerrar por aqui pois o próximo posto centralizaremos apenas os Controllers, Models, Migrations e Routes. Então até la!

Top comments (0)