DEV Community

Paulo Cavalcante
Paulo Cavalcante

Posted on

Horas é uma variável de ambiente, vou usar o ENV. Calma, calma, deixa eu te falar uma coisa antes

Sempre estamos na correria e querendo desenvolver o mais rápido possível, e muitas vezes acabamos pegando os velhos hábitos e construindo os velhos softwares, um item que podemos melhorar bastante é esse queridinho chamado environment, vamos entender um pouco mais sobre isso.


Antes de tudo gostaria de mostrar aqui o foco no conceito de configurações para o laravel, não irei me preocupar com os padrões restantes, como o de resources ou outros afins.

1 - Vamos buscar o conhecimento!

Há um tempo escutei que eu não podia fazer essa passagem de ENV dentro dos meus códigos malucos, fiquei tipo; ué
Então o propósito é entender os motivos, porque assim, conseguimos tomar melhores decisões como engenheiros.

1.1 - Maneira correta ou um ponto de vista ?

Então vamos lá pequeno e futuro mestre, vamos colocar um valor em uma variável de ambiente para podermos brincar, então vamos chamar de:

.env

Vamos para o primeiro ponto, ótima decisão em ter colocado essa configuração como uma variável de ambiente, assim você torna tudo mais fácil para gerenciar diferentes ambientes ( Produção, homologação, Caso você tenha 😆 ) e muito mais seguro, porque esse valor não vai ser exposto quando você realizar aquele git push maroto no seu repositório (git/bitbucket), já imaginou seu secret de água vazado na internet que triste.

E para recuperar este valor no Laravel podemos utilizar o método env() ou também usar algum outro pacote como por exemplo a Support da Illuminate ( me lembra os minions, não sei porque 😅 )

metodo env

env: Helper Laravel ( Que utiliza o Env::get )
Env::get: Classe Env do package Support Illuminate

Nossa, está pronto, então porque ficar inventando moda ? A real é que isso não é uma boa ideia, vou explicar o porque em breve, continue comigo.
Para a solução diferente, podemos citar os arquivos de configuração que irão recuperar o valor do environment criado, assim o arquivo de configuração fica centralizado e vamos lá, fala sério! muito melhor para ler um código.

Nessa situação específica você já pode utilizar o arquivo de config existente, chamado services.php, mas nada impede que você crie um arquivo para o seu contexto específico.

No caminho config/services.php

array config service

E assim vamos chamar no código da seguinte forma:

call Config service


2 - Legal, mas porque eu devo usar configs pra recuperar variáveis e não apenas buscá-las diretamente ?

Vou tentar mostrar algumas razões:

2.1 - Aumento de desempenho e melhor utilização de IO

Pense na seguinte situação, você tem arquivos em produção que serão acessados a todo instante realizando um IO considerável o que vai aumentar recursos de máquina e dependendo da situação lentidão no sistema 😫 ( E acredite, até você achar o problema de fato, você irá passar por coisas que vão colocar em dúvida todo o seu conhecimento )

Quando falamos do ambiente em produção o recomendado é você fazer cache dos seus lindos arquivos de configuração, com o Laravel você pode utilizar o artisan

php artisan config:cache
Enter fullscreen mode Exit fullscreen mode

Esse lindo comando pega todos os arquivos de configurações e seus respectivos valores e os compila em um único arquivo php, o que aumenta o desempenho. Isso se dá ao fato que os números de IO é reduzido para 1

Curiosidade: Quando você utiliza esse comando o env() começa a retornar NULL porque ele desabilita esta função. Então se do "Neida" um env() seu parou de funcionar é isso.

Env() Executam operação de IO e elas são caras e lentas.

O melhor é fazer essa operação uma única vez no início da aplicação do que você ter que executar a operação toda vez que necessitar de um env.

2.2 - Organização e padronização da melhor maneira possível

Você poderá facilmente manter todas as suas configurações como quiser. Você pode colocar o nome do cachorro que quiser, criar uma pasta e estruturar todos os arrays como quiser também, isso deixará a estrutura mais limpa ( por favor, use com moderação )
Por exemplo:

Olha essa chave:

key service

e agora olha esta chave:

key env

Na minha humilde opinião a 1º é muito melhor.

E tirando que você poderá ter suas configurações semelhantes no lugar correto e centralizado sem precisar colocá-las "aleatoriamente" em seu código, e eu gosto bastante dessa ideia de estruturar o array que faça total sentido para aplicação.

E a orientação para novos desenvolvedores fica muito mais simples, já que você poderá informar onde e como fazer uma nova configuração.

Mantenha o simples, seja você a diferença!

Obrigado por tudo até aqui.

Fonte:

Laravel 11 Documentação Configuration

Top comments (1)

Collapse
 
arturgssjr profile image
Artur Júnior

👏👏👏👏