Einleitung
Dieser Leitfaden beschreibt, wie Sie von der alten Anwendungsstruktur (mitKernel-Klassen und mehreren Service Providern) aus Laravel 10 auf die Slim Application Skeleton ab Laravel 11 umsteigen.
Wann eine Migration sinnvoll ist
In folgenden Fällen ist eine Migration überlegenswert:- Neue Team-Mitglieder sollen mit der offiziellen Doku leichter arbeiten können — deshalb wollen Sie das Projekt auf die aktuelle Standardstruktur bringen.
- Sie möchten die Konsistenz zu Paketen oder Starter-Kits wahren, die ab Laravel 11 neu entstanden sind.
- Sie möchten Konfigurationsdateien und Klassen aus der Alt-Struktur reduzieren und die Codebasis vereinfachen.
Voraussetzungen
Diese Anleitung setzt Folgendes voraus:- Der Laravel-Versions-Upgrade ist abgeschlossen (
laravel/framework ^11.0oder höher). - Bestehende Tests laufen alle grün.
- Sie kennen die Anwendungsstruktur ab Laravel 11 (siehe Anwendungsstruktur ab Laravel 11).
Migrationsbeispiel
Wir zeigen, wie ein mit Laravel 10 + Breeze (Blade-Stack) erstelltes Projekt Breeze behält und nur die Anwendungsstruktur migriert.bootstrap/app.php ersetzen
bootstrap/app.php erzeugte die $app-Instanz und registrierte die Kernels. Ersetzen Sie das durch die
Application::configure()-Chain.Alt (Laravel 10):withMiddleware() und withExceptions() sind die neuen Ablageorte für die Konfiguration aus den Kernel-Dateien, die wir in den nächsten Schritten löschen. Lassen Sie sie zunächst leer und ergänzen Sie sie im weiteren Verlauf.HTTP-Kernel (app/Http/Kernel.php) löschen
app/Http/Kernel.php definierte globale Middleware, Middleware-Gruppen und Middleware-Aliase.Alt (app/Http/Kernel.php):app/Http/Kernel.php einfach löschen.Bei eigenen Anpassungen (zusätzliche/ausgeschlossene Middleware) übertragen Sie diese in withMiddleware() in bootstrap/app.php, bevor Sie die Datei entfernen.app/Http/Kernel.php.TrustProxies, EncryptCookies und VerifyCsrfToken aus app/Http/Middleware/ entfernen. Diese sind ins Framework integriert; ohne Anpassungen sind die Dateien überflüssig.Console-Kernel (app/Console/Kernel.php) löschen
app/Console/Kernel.php war für die Scheduler-Definition und das Autoloading von Commands zuständig.Alt (app/Console/Kernel.php):app/Console/Commands/ wird automatisch gescannt.Die Scheduler-Definition verschieben Sie nach routes/console.php oder in withSchedule() in bootstrap/app.php.app/Console/Kernel.php.app/Console/. Belassen Sie die Command-Dateien und entfernen Sie nur die Kernel-Klasse.Exception-Handler (app/Exceptions/Handler.php) löschen
app/Exceptions/Handler.php steuerte das Reporten und Rendern von Exceptions.Alt (app/Exceptions/Handler.php):withExceptions() in bootstrap/app.php und löschen dann die Datei.$dontFlash-Einträge lassen sich ebenfalls übertragen.app/Exceptions/Handler.php.RouteServiceProvider entfernen und Routen-Registrierung migrieren
app/Providers/RouteServiceProvider.php hat Routen-Dateien geladen und Rate Limits konfiguriert.Alt (app/Providers/RouteServiceProvider.php):withRouting() in bootstrap/app.php.AppServiceProvider::boot().HOME an anderer Stelle, ersetzen Sie sie durch eine URL-Zeichenkette oder verschieben Sie die Konstante in den AppServiceProvider.Nach der Migration löschen Sie app/Providers/RouteServiceProvider.php.Service Provider aufräumen
AppServiceProvider.php zu einem zusammen.Zu entfernende Provider (Inhalte in AppServiceProvider verschieben, dann löschen):AuthServiceProvider:providers-Array aus config/app.php.bootstrap/providers.php an, um die neue Struktur zu bedienen.bootstrap/providers.php, verwendet Laravel diese Datei vorrangig als Provider-Liste.Controller-Basisklasse aktualisieren
Controller-Basisklasse die Traits AuthorizesRequests und ValidatesRequests. Die neue Basisklasse in Laravel 11 ist eine schlichte abstrakte Klasse ohne diese Traits.Alt (Laravel 10):Controller-Basisklasse belassen. Sie müssen nicht alles auf einmal ändern.Überflüssige config-Dateien entfernen
config/cors.php, config/hashing.php, config/view.php u. a. — können Sie entfernen. Angepasste Dateien belassen Sie.public/index.php aktualisieren
artisan aktualisieren
artisan-Datei vollständig.tests/TestCase.php aktualisieren
CreatesApplication wird nicht mehr benötigt.
tests/CreatesApplication.php kann gelöscht werden..env, .env.example und phpunit.xml aktualisieren
CACHE_DRIVER heißt jetzt CACHE_STORE, und neue Einträge sind hinzugekommen. Passen Sie diese bei Bedarf an.
Da diese Änderungen Config-Dateien und die Produktivumgebung betreffen, gehen Sie umsichtig vor.
Sie müssen den Änderungen nicht zwanghaft folgen.Funktionscheck