Cupom de US$10 da Digital Ocean

Laravel 8 - Novidades

Laravel 8 - Novidades

Em Setembro de 2020 foi lançado o Laravel 8, nova versão do framework com várias novidades que vamos listar logo abaixo.

Como o Laravel agora segue oficialmente a nomenclatura de versionamento semântico de versões, a cada 6 meses é lançado uma major version.

Suporte

Atualmente a última versão LTS (Long Time Support) do Laravel é a 6, que deve receber atualizações de segurança até 3 anos depois do seu lançamento.

Já a versão 8, atual, terá suporte oficial até Setembro de 2021.

Confira a tabela atual de versões e suporte do Laravel:

Versão Lançamento Bug Fixes Até Secutiry Fixes Até
6 (LTS) 03/09/2019 03/09/2021 03/09/2022
7 03/03/2020 06/10/2020 03/03/2021
8 08/09/2020 06/04/2021 08/09/2021

Laravel Jetstream

Laravel Jetstream é um pacote que gera uma aplicação base para user usada incialmente em seu projeto com Laravel. Ele inclui login, registro, verificação de email, autenticação em dois fatores, gerenciamento de sessão, suporte a API e gerenciamento de usuários. Este pacote irá substituir o atual template base de autenticação que existe no Laravel.

Por baixo dos panos Jetstream usa Tailwind CSS e oferece a opção de usar Livewire ou Inertia.

Pasta para Models

Uma das funcionalidades mais solicitadas pela comunidade Laravel foi atendida. Agora as Models também tem sua própria pasta, localizada em app/Models. Grande parte dos desenvolvedores já fazia essa alteração inicialmente em seus projetos. Todos comandos e demais funcionalidades do Laravel foram alterados para verificar se esse diretório existe. Caso não exista e você goste de usar os Models na raiz da pasta app, não tem problema, basta remover esta pasta e seguir usando como anteriormente.

Classes de Model Factory

As Model Factories do Laravel foram totalmente reescritas para serem usadas como Classes. Na versão 8 do Laravel você vai encontrar uma classe UserFactory padrão para ser usada como modelo.

<?php

namespace Database\Factories;

use App\Models\User;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;

class UserFactory extends Factory
{
    protected $model = User::class;

    public function definition()
    {
        return [
            'name' => $this->faker->name,
            'email' => $this->faker->unique()->safeEmail,
            'email_verified_at' => now(),
            'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
            'remember_token' => Str::random(10),
        ];
    }
}

As models agora tem um novo trait HasFactory que verifica a existência do factory e pode ser utilizado da seguinte maneira:

use App\Models\User;

User::factory()->count(50)->create();

Mais informações e outros exemplos na Documentação do Laravel

Migration Squashing

Conforme sua aplicação vai crescendo você pode acabar com vários e vários arquivos de migrations. Se você usar MySQL ou PostgreSQL você consegue agora transformar todas suas migrations em um único arquivo SQL.

Para isso, utilize o comando schema:dump

php artisan schema:dump

Quando você roda este comando o Laravel irá criar um arquivo de "schema" na pasta database/schema. A partir disso, todas novas migrações de banco que forem rodadas irão usar primeiro o arquivo de schema. Caso novas migrations sejam criadas, elas serão rodadas após o arquivo de schema.

Job Batching

A nova funcionalidade de Job Batching do Laravel 8 irá ajudar a rodar diversos jobs de uma só vez, além de executar alguma ação após o grupo de jobs terminar de executar.

O novo método batch do facade Bus deve ser usado para disparar o grupo de jobs. Com ele você pode usar os métodos de callback then, catch e finally para executar ações após a execução.

use App\Jobs\ProcessPodcast;
use App\Podcast;
use Illuminate\Bus\Batch;
use Illuminate\Support\Facades\Bus;
use Throwable;

$batch = Bus::batch([
    new ProcessPodcast(Podcast::find(1)),
    new ProcessPodcast(Podcast::find(2)),
    new ProcessPodcast(Podcast::find(3)),
    new ProcessPodcast(Podcast::find(4)),
    new ProcessPodcast(Podcast::find(5)),
])->then(function (Batch $batch) {
    // All jobs completed successfully...
})->catch(function (Batch $batch, Throwable $e) {
    // First batch job failure detected...
})->finally(function (Batch $batch) {
    // The batch has finished executing...
})->dispatch();

return $batch->id;

Mais informações sobre Job Batching em https://laravel.com/docs/8.x/queues#job-batching

Modo de manutenção

Em versões anteriores do Laravel, o comando php artisan down colocava sua aplicação em modo de manutenção. Para passar esse modo e acessar a aplicação era necessário adicionar ips a uma lista de ips liberados.

Esta funcionalidade foi removida para a nova opção secret, em que uma senha é criada para facilitar o acesso a aplicação.

php artisan down --secret="1630542a-246b-4b66-afa1-dd72a4c43515"

Após rodar o comando a aplicação pode ser acessada da seguinte maneira:

https://example.com/1630542a-246b-4b66-afa1-dd72a4c43515

Se você usa o comando php artisan down durante uma atualização de aplicação, seus usuários ainda podem encontrar erros ao acessar seu site, caso atualizações de pacotes do composer estejam em andamento.

Para isso foi criado um novo parâmetro chamado --render, em que você pode informar uma view para ser pre-renderizada e retornada ao usuário enquando sua aplicação estiver em modo de manutenção.

php artisan down --render="errors::503"

Melhorias em Artisan Serve

O comando Artisan serve foi atualizado para automaticamente recarregar quando houverem alterações no arquivo .env. Anteriormente o servidor embutido deveria ser parado e iniciado novamente para carregar novas alterações.

Paginação com Tailwind CSS

O paginador padrão do Laravel foi atualizado para utilizar estrutura e classes do Tailwind CSS.


A lista completa de melhorias do Laravel 8 pode ser encontrada em https://laravel.com/docs/8.x/releases

Documentação do Laravel 8 em https://laravel.com/docs/8.x

Compartilhe

URL

Você também pode gostar de:

Comentários