Laravel 11
Tags: laravel, php, backend
Published: 2024-03-12 12:22:45

---
title: Laravel 11
published: true
description: O que tem de novo no Laravel 11
tags: laravel, php, backend
# cover_image: https://direct_url_to_image.jpg
# Use a ratio of 100:42 for best results.
# published_at: 2024-03-12 11:42 +0000
---

Laravel 11 chegou com algumas mudanças que posso dizer "finalmente" e umas outras "pra que isso?".

---

#### Controller simplificado
O controller base foi simplicado, não extendendo o Controller interno do Laravel, sendo assim quando precisar do `AuthorizesRequests` ou do `ValidatesRequests` precisará adicionar a cada controller que for utilizar.


#### Rate limit em segundos
Agora é possível definir rate limits em segundos em vez de minutos, utilizando o `Limit::perSecond()`.


#### Novos comandos de criação do artisan
Agora temos comando para criação de class, enum, interface e trait:

```
php artisan make:class
php artisan make:enum
php artisan make:interface
php artisan make:trait
```


#### Helper once
Agora você pode cachear um retorno de função e sempre ter o mesmo retorno nas chamadas subsequentes:

```PHP
function random(): int
{
    return once(function () {
        return random_int(1, 1000);
    });
}
 
random(); // 123
random(); // 123 (cached result)
random(); // 123 (cached result)
```


#### Menos arquivos padrões
Se olhar a pasta `app/Http` vai ver somente o controller agora, sem o `Kernel.php` e a pasta `Middlewares`.


#### Campo 'password' pode ser com outro nome agora
Finalmente, depois de anos de espera os Devs BRs que cairam num projeto que o banco é em português poderão utilizar o nome da coluna senha na tabela de usuario como 'senha' em vez de 'password'. O método `getAuthPasswordName()` foi adicionado ao `Authenticatable` permitindo alterar o nome da propriedade da senha.


#### Migrations de alterações ficaram mais chatinhas
Agora toda vez que alterar uma coluna pela migration precisará reescrever todas as alterações anteriores novamente para não voltar ao padrão. Digamos que na criação foi adicionado um comentário na coluna, e em uma migration posterior você altera para ter um valor padrão, para não perder o comentário terá que chamar o método novamente ou irá voltar para o padrão que é sem comentário. Particulamente achei isso ruim.


#### MariaDB
Agora o Laravel possui um driver específico pro MariaDB, em vez de utilizar o driver do MySQL agora pode utilizar o mariadb nas configurações do banco. O que isso muda por enquanto é em relação ao `uuid`, mas futuramente deverá ter mais coisas específicas pro banco.


#### Carbon 3
Agora o Laravel suporta tanto o Carbon 2 quanto o Carbon 3, só atulizar nas dependencias do composer e fazer os ajustes conforme a documentação do Carbon no que precisar.


#### Registro de Providers
Agora o registro de providers foi movido para o arquivo `bootstrap/Providers.php` e retirado do `config/app.php`. Para packages que criavam arquivos nessa pasta agora é precisa atualizar o método para o `ServiceProvider::addProviderToBootstrapFile()`.

---

Essas são as mudanças que achei interresante comentar, pra saber de todas é só ler o [release notes](https://laravel.com/docs/11.x/releases) e o [upgrade guide](https://laravel.com/docs/11.x/upgrade) na documentação do Laravel.