Inleiding
Deze gids beschrijft hoe je migreert van de oude applicatiestructuur van Laravel 10 en eerder (een structuur metKernel-klassen en meerdere service providers) naar het Slim Application Skeleton van Laravel 11 en later.
Wanneer migreren nodig kan zijn
In de volgende situaties kun je een migratie overwegen:- Je wilt het project laten aansluiten op de nieuwste standaardstructuur, zodat nieuwe teamleden het makkelijk kunnen vergelijken met de officiële documentatie
- Je wilt consistentie bewaren met packages en starter kits die met Laravel 11 of later zijn gemaakt
- Je wilt configbestanden en klassen uit de oude structuur opruimen en de codebase eenvoudiger maken
Vereisten
Deze gids gaat uit van de volgende situatie:- De Laravel-versie-upgrade is afgerond (
laravel/framework ^11.0of hoger) - Alle bestaande tests slagen
- Je begrijpt de applicatiestructuur van Laravel 11 en later (zie Applicatiestructuur van Laravel 11 en later)
Migratievoorbeeld
We laten zien hoe je een project dat is gemaakt met Laravel 10 + Breeze (Blade-stack) migreert naar de nieuwe structuur, terwijl Breeze intact blijft.bootstrap/app.php vervangen
bootstrap/app.php maakte een $app-instantie aan en registreerde de kernels. Dit vervang je door
de Application::configure()-keten.Oud (Laravel 10):withMiddleware() en withExceptions() zijn de plek waar je de configuratie van de kernelbestanden die je in de volgende stappen verwijdert naartoe verhuist. Laat ze eerst leeg; je vult ze aan in de volgende stappen.De HTTP-kernel (app/Http/Kernel.php) verwijderen
app/Http/Kernel.php stonden de globale middleware, middlewaregroepen en middleware-aliassen gedefinieerd.Oud (app/Http/Kernel.php):app/Http/Kernel.php
direct verwijderen.Heb je wel aanpassingen (eigen middleware toegevoegd of uitgesloten), verhuis die dan eerst naar withMiddleware()
in bootstrap/app.php en verwijder het bestand daarna.app/Http/Kernel.php.TrustProxies, EncryptCookies en VerifyCsrfToken
verwijderen uit app/Http/Middleware/. Ze zitten ingebouwd in het framework, dus zonder aanpassingen heb je de bestanden zelf niet meer nodig.De consolekernel (app/Console/Kernel.php) verwijderen
app/Console/Kernel.php verzorgde de scheduledefinities en het automatisch laden van commands.Oud (app/Console/Kernel.php):app/Console/Commands/ wordt automatisch gescand, dus de regel met $this->load()
is niet meer nodig.De scheduledefinities verhuis je naar routes/console.php of naar withSchedule() in bootstrap/app.php.app/Console/Kernel.php.app/Console/ niet. Laat de commandbestanden staan en verwijder alleen het bestand van de kernelklasse.De exception handler (app/Exceptions/Handler.php) verwijderen
app/Exceptions/Handler.php verzorgde de configuratie van exceptierapportage en -rendering.Oud (app/Exceptions/Handler.php):withExceptions() in bootstrap/app.php en verwijder het bestand daarna.$dontFlash, dan verhuis je die op dezelfde manier.app/Exceptions/Handler.php.De RouteServiceProvider verwijderen en routeregistratie verhuizen
app/Providers/RouteServiceProvider.php verzorgde het laden van routebestanden en de configuratie van rate limiting.Oud (app/Providers/RouteServiceProvider.php):withRouting() in bootstrap/app.php.AppServiceProvider::boot().HOME, vervang die dan door de URL-string zelf of verplaats de constante naar de AppServiceProvider.Verwijder daarna app/Providers/RouteServiceProvider.php.Service providers opruimen
AppServiceProvider.php.Te verwijderen providers (eerst de inhoud verhuizen naar de AppServiceProvider, dan verwijderen):providers-array uit config/app.php.bootstrap/providers.php aan om aan te sluiten op de nieuwe structuur.bootstrap/providers.php bestaat, geeft Laravel dit bestand voorrang als lijst van providers.De basiscontrollerklasse bijwerken
Controller-basisklasse van Laravel 10 gebruikte de traits AuthorizesRequests en ValidatesRequests. De nieuwe basisklasse van Laravel
11 is een simpele abstracte klasse zonder deze traits.Oud (Laravel 10):Controller-basisklasse
laten staan. Het blijft ook werken als je niet alles in één keer verandert.Overbodige configbestanden verwijderen
config/cors.php, config/hashing.php en config/view.php, kun je verwijderen. Laat gewijzigde bestanden staan.public/index.php bijwerken
artisan bijwerken
tests/TestCase.php bijwerken
CreatesApplication is niet meer nodig, dus je past dit aan.
tests/CreatesApplication.php mag je verwijderen..env, .env.example en phpunit.xml bijwerken
CACHE_DRIVER dat CACHE_STORE is geworden, en er zijn items bijgekomen; pas dit aan waar nodig.
Deze wijzigingen raken ook configbestanden en de productieomgeving, dus wees hier voorzichtig mee.
Je hoeft dit niet koste wat kost te volgen.Werking controleren