Dieser Artikel informiert über die anstehenden Neuerungen in Laravel 11. Bitte beachte, dass es sich hierbei noch um eine Beta-Vorschau handelt und Änderungen jederzeit möglich sind. Der Artikel wird aktualisiert, sofern neuere Informationen bzw. Änderungen bekannt sind.
Eines der ersten Dinge, die dir auffallen werden, ist die überarbeitete und vereinfachte Verzeichnisstruktur von Laravel. Controller erweitern standardmäßig nichts mehr und das Middleware-Verzeichnis ist verschwunden. Laravel enthält derzeit neun Middleware, von denen du viele wahrscheinlich nie anpassen würdest.
Wenn du sie jedoch anpassen möchtest, findest du die entsprechenden Funktionen jetzt im App/ServiceProvider:
public function boot(): void
{
EncryptCookies::except(['some_cookie']);
}
Die Model Casts werden nun als Methoden statt als Eigenschaften definiert. Das ermöglicht dir, zusätzliche Funktionen aufzurufen, wie zum Beispiel andere Methoden direkt aus den Casts. Ein Beispiel dazu unter Verwendung der neuen Laravel 11 AsEnumCollection
:
protected function casts(): array
{
return [
'user_verified_at' => 'datetime',
'password' => 'hashed',
'options' => AsEnumCollection::of(UserOption::class),
];
}
Viele der Funktionen, die du bisher im Kernel umgesetzt hast, lassen sich nun in der Bootstrap/App definieren.
return Application::configure()
->withProviders()
->withRouting(
web: __DIR__.'/../routes/web.php',
commands: __DIR__.'/../routes/console.php',
)
->withMiddleware(function(Middleware $middleware) {
$middleware->web(append: LaraconMiddleware::class);
})
Laravel 11 reduziert die Anzahl der Konfigurationsdateien, indem alle Konfigurationsoptionen kaskadiert werden. Die .env
wurde erweitert und enthält nun alle Optionen, die du setzen möchtest.
Mit dem neuen Befehl config:publish
kannst du jegliche Konfigurationen zurückholen, die du möglicherweise vermisst. Selbst dann ermöglicht dir das neue Kaskaden-Feature, jede Option, die du nicht anpassen möchtest, zu entfernen.
Standardmäßig gibt es nur noch zwei Route-Dateien: console.php und web.php. API-Routen können nun optional über php artisan install:api
hinzugefügt werden, was dir die API-Routendatei und Laravel Sanctum gibt. Gleiches gilt für die WebSocket-Übertragung mit php artisan install:broadcasting
.
Der Console Kernel wird in Laravel 11 entfernt. Du wirst in der Lage sein, deine Konsolenbefehle direkt in routes/console.php
zu definieren.
Wenn du eine neue Laravel-App startest, werden dir einige Standardmigrationen aus den Jahren 2014 und 2019 mitgeliefert. Diese werden jetzt ohne Datum geliefert und in nur zwei Dateien zusammengefasst.
Eine wichtige Entscheidung, die frühzeitig getroffen wurde: Laravel 11 erfordert mindestens PHP 8.2. Wenn du also noch eine ältere Version von PHP verwendest, ist jetzt ein guter Zeitpunkt für ein Upgrade.