Laravel 11: as novidades que você precisa conhecer
1. Estrutura Simplificada e Novo Esqueleto da Aplicação
O Laravel 11 introduziu uma reformulação significativa na estrutura inicial dos projetos. A equipe de desenvolvimento removeu diversos arquivos e classes que antes eram considerados essenciais, mas que na prática geravam complexidade desnecessária.
Arquivos removidos ou simplificados:
- app/Http/Kernel.php — removido
- app/Http/Exceptions/Handler.php — removido
- app/Console/Kernel.php — removido
- app/Providers/EventServiceProvider.php — removido
- config/broadcasting.php — removido
- config/view.php — removido
O novo ponto central de configuração é o arquivo bootstrap/app.php, que agora concentra as definições de middleware, service providers e configurações de roteamento.
// bootstrap/app.php - Laravel 11
<?php
use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;
return Application::configure(basePath: dirname(__DIR__))
->withRouting(
web: __DIR__.'/../routes/web.php',
api: __DIR__.'/../routes/api.php',
commands: __DIR__.'/../routes/console.php',
health: '/up',
)
->withMiddleware(function (Middleware $middleware) {
$middleware->alias([
'role' => \App\Http\Middleware\CheckRole::class,
]);
})
->withExceptions(function (Exceptions $exceptions) {
//
})->create();
Essa simplificação reduz a curva de aprendizado para novos desenvolvedores e facilita a manutenção de projetos existentes.
2. Configuração Mínima e Arquivo .env Otimizado
O arquivo .env do Laravel 11 foi drasticamente reduzido. Muitas variáveis de ambiente que antes eram obrigatórias agora são resolvidas por convenção.
# .env - Laravel 11 (versão mínima)
APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost
DB_CONNECTION=sqlite
# DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORD não são necessários para SQLite
SESSION_DRIVER=file
Principais mudanças:
- Banco SQLite como padrão (sem necessidade de configurar host, porta ou credenciais)
- Remoção de variáveis como LOG_CHANNEL, BROADCAST_DRIVER, FILESYSTEM_DISK
- Cache, sessão e fila agora usam configurações sensatas por padrão
Para migrar projetos existentes, o Laravel 11 oferece o comando:
php artisan config:publish
Este comando publica os arquivos de configuração que foram removidos do núcleo, permitindo compatibilidade com projetos mais antigos.
3. Novidades no Roteamento e Controllers
O roteamento no Laravel 11 foi simplificado com a remoção da necessidade do RouteServiceProvider. Agora as rotas são carregadas diretamente pelo arquivo bootstrap/app.php.
// routes/web.php - Laravel 11
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\DashboardController;
// Rota básica
Route::get('/', function () {
return view('welcome');
});
// Rota com view direta
Route::view('/dashboard', 'dashboard');
// Rota com redirect
Route::redirect('/home', '/dashboard', 301);
// Grupo com rate limiting embutido
Route::middleware(['auth', 'throttle:60,1'])->group(function () {
Route::get('/profile', [ProfileController::class, 'edit']);
Route::put('/profile', [ProfileController::class, 'update']);
});
Novidades importantes:
- Métodos Route::view() e Route::redirect() mais enxutos, sem necessidade de controllers
- Rate limiting nativo nos grupos de rotas
- Suporte a múltiplos arquivos de rotas organizados por domínio ou funcionalidade
4. Melhorias no SQLite e Banco de Dados
O SQLite agora é o driver padrão para novos projetos Laravel 11. Isso representa uma mudança significativa em relação às versões anteriores que usavam MySQL.
// config/database.php - Configuração SQLite padrão
'default' => env('DB_CONNECTION', 'sqlite'),
'sqlite' => [
'driver' => 'sqlite',
'url' => env('DB_URL'),
'database' => env('DB_DATABASE', database_path('database.sqlite')),
'prefix' => '',
'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
],
Benefícios do SQLite no Laravel 11:
- Suporte completo a foreign keys e índices
- Queries paralelas para melhor performance
- Ideal para desenvolvimento e projetos de pequeno/médio porte
- Redução da complexidade de setup (sem necessidade de servidor de banco separado)
Para produção, o Laravel 11 também melhorou o suporte a bancos como MySQL, PostgreSQL e SQL Server, com otimizações no query builder e no Eloquent ORM.
5. Health Check e Monitoramento Integrado
O Laravel 11 introduz endpoints de health check prontos para uso, facilitando o monitoramento da aplicação.
// bootstrap/app.php - Configuração do health check
->withRouting(
web: __DIR__.'/../routes/web.php',
api: __DIR__.'/../routes/api.php',
commands: __DIR__.'/../routes/console.php',
health: '/up', // Endpoint de health check
)
Rotas disponíveis:
- /up — Retorna 200 se a aplicação estiver funcionando
- /health — Pode ser personalizada para verificar banco, cache e filas
Para criar verificações personalizadas:
// App\Health\CustomHealthCheck.php
<?php
namespace App\Health;
use Illuminate\Support\Facades\Cache;
use Spatie\Health\Checks\Check;
use Spatie\Health\Checks\Result;
class CacheHealthCheck extends Check
{
public function run(): Result
{
$result = Result::make();
try {
Cache::store('redis')->set('health_check', true);
$result->ok('Cache Redis funcionando');
} catch (\Exception $e) {
$result->failed('Erro no cache: ' . $e->getMessage());
}
return $result;
}
}
Esses endpoints podem ser integrados com ferramentas como Laravel Pulse, Laravel Horizon e serviços externos como Pingdom ou UptimeRobot.
6. Remoção de Facades e Helpers Legados
O Laravel 11 removeu várias facades que eram consideradas desnecessárias ou que incentivavam más práticas.
Facades removidas:
- Request — use injeção de dependência
- Response — use response() helper ou retorne diretamente
- URL — use url() helper ou injeção de UrlGenerator
// Antes (Laravel 10)
<?php
use Illuminate\Support\Facades\Request;
class UserController extends Controller
{
public function store()
{
$name = Request::input('name');
// ...
}
}
// Depois (Laravel 11) - Injeção de dependência
<?php
use Illuminate\Http\Request;
class UserController extends Controller
{
public function store(Request $request)
{
$name = $request->input('name');
// ...
}
}
Helpers mantidos (com recomendações):
- app() — para resolver classes do container
- config() — para acessar configurações
- env() — apenas para arquivos de configuração, não em controllers
7. Atualizações no Artisan e Comandos Úteis
O Artisan recebeu novos comandos que agilizam o desenvolvimento e promovem boas práticas de código limpo.
# Novos comandos no Laravel 11
php artisan make:class PaymentService
php artisan make:enum PaymentStatus
php artisan make:interface PaymentGatewayInterface
php artisan make:trait HasTimestamps
php artisan install:api # Configura Laravel Sanctum rapidamente
Exemplo prático com make:enum:
// app/Enums/PaymentStatus.php
<?php
namespace App\Enums;
enum PaymentStatus: string
{
case Pending = 'pending';
case Completed = 'completed';
case Failed = 'failed';
case Refunded = 'refunded';
public function label(): string
{
return match($this) {
self::Pending => 'Pendente',
self::Completed => 'Concluído',
self::Failed => 'Falhou',
self::Refunded => 'Reembolsado',
};
}
}
O comando install:api é particularmente útil para projetos que precisam de autenticação API, configurando automaticamente o Laravel Sanctum com as rotas e middlewares necessários.
Conclusão
O Laravel 11 representa um marco na evolução do framework, priorizando simplicidade, performance e boas práticas. As mudanças na estrutura, a adoção do SQLite como padrão e a remoção de componentes legados tornam o framework mais acessível para iniciantes e mais eficiente para projetos profissionais.
Para aproveitar ao máximo essas novidades, recomenda-se iniciar novos projetos diretamente com Laravel 11 e planejar a migração gradual de projetos existentes, utilizando os comandos de publicação de configuração quando necessário.
Referências
- Documentação Oficial do Laravel 11 — Guia completo de instalação, configuração e todas as funcionalidades do Laravel 11
- Laravel News: What's New in Laravel 11 — Artigo detalhado com todas as novidades, mudanças e breaking changes do Laravel 11
- Laravel Shift: Upgrade Guide to Laravel 11 — Ferramenta e guia prático para migrar projetos existentes para o Laravel 11
- Spatie: Laravel Health Check Package — Documentação do pacote oficial de health checks para monitoramento de aplicações Laravel
- Laravel Daily: Laravel 11 New Features Tutorial — Tutoriais práticos em vídeo e texto sobre as principais novidades do Laravel 11
- Laravel Bootcamp: Building a Laravel 11 Application — Tutorial oficial da Laravel para construir uma aplicação completa usando Laravel 11