Diego França

Pare de usar env() dentro da sua aplicação Laravel (fora da config)

Venho compartilhar com vocês uma dica rápida sobre o Laravel. Vejo muitas pessoas enfrentando problemas ao tentar acessar variáveis de ambiente dentro da aplicação. O erro mais comum acontece quando os desenvolvedores utilizam a função env() diretamente em suas classes ou serviços, para ler configurações do arquivo .env, e depois não entendem por que, em alguns momentos, essa função retorna null.

A explicação é simples: isso acontece por causa do fluxo de inicialização do Laravel. Para ajudar a visualizar, criei um diagrama que explica como esse processo funciona:

Como podemos ver na imagem acima, quando o Laravel recebe uma request (ou executa um comando, job, etc.), ele inicia pelo arquivo index.php, que chama o bootstrap/app.php. Nesse momento, o Laravel carrega as variáveis do arquivo .env e, logo em seguida, lê os arquivos de configuração presentes no diretório config/. Essas configurações são então armazenadas em cache (caso você utilize o comando php artisan config:cache).

Após esse ponto, os Service Providers são registrados e o Kernel da aplicação assume o controle da execução. Por isso, não é recomendado utilizar env() para acessar configurações após essa etapa, pois o Laravel já não dependerá mais do .env diretamente durante o ciclo de vida da aplicação.

Errado (não recomendado fora da config/):

env('CHAVE')

Certo:

config('configuracao.chave')

Seguindo esse padrão, você evita problemas com null e garante que sua aplicação seja compatível com o cache de configuração.