Lumen: Ensinando comandos para nosso terminal artisan
Tags: lumen, php
Published: 2023-10-13 12:46:16


![](https://cdn-images-1.medium.com/max/4400/1*Y6Ygcvh0AJR2OMO_m-01Ug.png)

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**](https://dev.to/henriqueweiand/lumen-instalando-atraves-do-docker-486c)

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

O que aconteceu: Baixamos um docker-image pronto do [hub](https://hub.docker.com) 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**](https://packagist.org/packages/wn/lumen-generators)

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*

deixe esse arquivo da seguinte maneira
{% gist https://gist.github.com/henriqueweiand/7d7c6bd82009f1b85b1d2068c05f9bec.js %}
E por seguindo o arquivo

    */lumen/*bootstrap*/app.php*

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();

E depois descomente essa outra linha

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

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

Veja que ganhamos mais uns truques de comandos

![](https://cdn-images-1.medium.com/max/2000/1*4zvkq8KrGs_XCzIsQ6fTKQ.png)

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

Esse cara vai criar um arquivo no seguinte diretório

    /lumen/app/Http/Controllers/RESTActions.php

O conteúdo desse cara é o seguinte
{% gist https://gist.github.com/henriqueweiand/1e318216f9c98af69b0075d457b970ad.js %}
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](https://laravel.com/docs/5.8/controllers#resource-controllers) 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

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!

![](https://cdn-images-1.medium.com/max/2000/1*osA8WMKoaSdhO3NHp3XaZA.gif)