Blog

Neuerungen in Laravel 11: Was Web-Entwickler wissen müssen

Laravel

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.

Vereinfachte Verzeichnisstruktur

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']);
}

Änderungen bei den Model Casts

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),
    ];
}

Kein Http/Kernel mehr

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);
    })

Änderungen in der Konfiguration

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.

Änderungen bei den Routen

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 entfernt

Der Console Kernel wird in Laravel 11 entfernt. Du wirst in der Lage sein, deine Konsolenbefehle direkt in routes/console.php zu definieren.

Verschlankte Standardmigrationen

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.

Mindestunterstützung für PHP 8.2

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.