O Laravel 8 foi lançado e inclui muitos novos recursos, como o Laravel Jetstream, um diretório exclusivo para models (modelos), classes de fábrica de modelos, squashing de migração, melhorias nas limitações de quotas (rate-limit), helplers para testes de datas e time, componentes dinâmicos de blade e muitos outros recursos.

Antes de continuarmos o artigo com o novos recursos da versão 8, lembre-se que a partir da versão 6, o Laravel segue o semver (Semantic Version) e lança uma nova versão principal a cada seis meses.

Laravel Jetstream

O Laravel Jetstream é um scafolding de aplicativo projetado com uma interface moderna para o Laravel.

Jetstream fornece o ponto de partida perfeito para seu próximo aplicativo Laravel e inclui login, registro de usuários, verificação de e-mail, autenticação de dois fatores (two-factors authentication), gerenciamento de sessão, suporte de API via Laravel Sanctum e gerenciamento opcional de equipes.

O Jetstream é projetado usando Tailwind CSS e oferece a sua escolha de esqueletos para Livewire ou Inertia.

Diretório de Modelos

O esqueleto do aplicativo Laravel 8 agora inclui um diretório específico para modelos em app/Models.

Todos os comandos do gerador - php artisan make, assumem que os modelos existem em app/Models; no entanto, se esse diretório não existir, a estrutura assumirá que o aplicativo mantém os modelos dentro da pasta raiz app/.

Classes de fábrica de modelos

As fábricas de modelos do Eloquent agora são baseadas em classes a partir do Laravel 8, com suporte aprimorado para relacionamentos entre fábricas, como por exemplo: um usuário tem muitos posts.

Migration Squashing

Se seu aplicativo contém muitos arquivos de migração, agora você pode comprimi-los em um único arquivo SQL.

Este arquivo será executado primeiro ao executar migrações, seguido por quaisquer arquivos de migração restantes que não façam parte do arquivo de esquema comprimido.

Eliminar as migrações existentes minimiza o problema de “inchaço” do arquivo de migração e possivelmente melhorar o desempenho durante a execução de testes.

Rate limiting aprimorado

O Laravel 8 traz melhorias para a funcionalidade de limitação de cotas existente, ao mesmo tempo que oferece compatibilidade com versões anteriores do middleware de throttle existente e oferece mais flexibilidade.

O Laravel 8 tem o conceito de Rate Limiters (Limitadores de Cota) que você pode definir através de um facade.

Helpers de teste para “tempo” (time)

Os desenvolvedores já tem, com o Laravel, total controle sobre a modificação do tempo através da excelente biblioteca Carbon PHP.

Na versão 8 do Laravel um novo passo doi adicionado, fornecendo helpers que auxiliam a manipulação do tempo dentro dos testes. Explicando rapidamente, ao usar esses métodos, por exemplo, o tempo poderá ser reiniciado (zerado) entre cada teste.

Componentes dinâmicos no Blade

É comum você precisar renderizar um componente Blade dinamicamente em tempo de execução - runtime. Agora o Laravel 8 para renderizar o componente fornece o:

<dynamic-component>

Remoção de namespace de rota padrão dos controladores

A partir da versão 8 do Laravel, o “namespacing” de rota padrão para os Controllers não é definido, desta maneira, para que você associe uma rota a uma ação de um controlador, deverá importar o controlador no arquivo de rotas, como explicado na documentação oficial:

use App\Http\Controllers\UserController;

Route::get('/user', [UserController::class, 'index']);

Porém, esta “nova maneira” de declarar as rotas tem gerado certa confusão, e ocasionando o erro “Target class does not exist”.

Apesar desta mudança ser compatível com versões anteriores, o que significa que projetos mais antigos que usavam o Laravel 7.x podem facilmente migrar para o Laravel 8.x, sem alterar nada, os novos projetos criados no Laravel 8 devem levar isso em consideração.

O problema decorrente desta mudança em seus aplicativos Laravel 8 recém-criados, ao tentar carregar as rotas depara-se com uma exceção como:

Target class [MeuController] does not exist.

Como já mencionado o problema não está relacionado necessariamente a um erro de código, mas a um ajuste necessário, ainda mais levando em conta que 99,9% dos tutoriais a respeito Laravel (ao menos até a versão 7) disto.

Para saber mais sobre Laravel 8

Estes são apenas alguns dos novos recursos do Laravel 8, para verificar uma lista completa leia as notas de lançamento do projeto bem como o guia de atualização. Para ter uma visão geral do Framework Laravel leia o artigo Framework Laravel – O que é.