Skip to main content
In Laravel 11 is de applicatiestructuur ingrijpend veranderd met het “Slim Application Skeleton”. Deze pagina bundelt de punten waar je makkelijk over struikelt als je instapt in een project dat met de oude structuur is geüpgraded, of als je geleerd hebt met boeken en tutorials van Laravel 10 of eerder. Het zijn vragen die rond de release van Laravel 11 vaak gesteld werden op het Laracasts-forum en Stack Overflow.
Deze FAQ richt zich op nieuwe projecten (Laravel 11 en later). Voor het upgraden van bestaande projecten, zie de migratiegids.
In de nieuwe structuur zijn configbestanden die zelden worden aangepast uit het project verwijderd. Voor deze bestanden wordt de config/ binnen het framework gebruikt.De config/ aan de projectkant en de config/ aan de frameworkkant worden samengevoegd, waarbij de projectkant voorrang krijgt. Zodra je iets wilt aanpassen, maak je het bestand aan en wordt het toegepast.
In de nieuwe structuur van Laravel 11 is App\Http\Controllers\Controller een lege klasse geworden: hij erft niet van Illuminate\Routing\Controller en gebruikt de traits ValidatesRequests / AuthorizesRequests niet.Zie: Controller in Laravel 10 vs Controller in Laravel 11Alternatieven:
Gebruik je dit vaak, dan kun je App\Http\Controllers\Controller ook terugbrengen naar de Laravel 10-variant.
In de nieuwe structuur is app/Http/Kernel.php vervallen; middleware configureer je nu via withMiddleware() in bootstrap/app.php.
De bestanden van je eigen middleware maak je nog steeds aan in app/Http/Middleware/.
$this->middleware() is functionaliteit van Illuminate\Routing\Controller en is dus niet beschikbaar in de lege basiscontroller van de nieuwe structuur.Implementeer in plaats daarvan de interface HasMiddleware en definieer een middleware()-methode.
Vanaf Laravel 13 kun je ook het #[Middleware]-attribute gebruiken.
Zie: Controller middleware
authorizeResource() is afhankelijk van de trait AuthorizesRequests en werkt daarom niet in de lege basiscontroller van de nieuwe structuur.Er zijn meerdere oplossingen.1. De basiscontroller terugbrengen naar de Laravel 10-opzet (het eenvoudigst)
Hiermee kun je $this->authorizeResource() weer gebruiken.2. Het #[Authorize]-attribute van Laravel 13 op elke methode zetten
In de nieuwe structuur is app/Console/Kernel.php vervallen en is de plek voor het instellen van de schedule veranderd.In routes/console.php zetten (aanbevolen):
In bootstrap/app.php zetten:
In de nieuwe structuur is de EventServiceProvider vervallen en is handmatig registreren van events en listeners niet meer nodig.Hoe automatische registratie werkt: zodra je in de handle()-methode van een listenerklasse de eventklasse als type declareert, wordt de listener automatisch geregistreerd.
Is handmatige registratie toch nodig, dan doe je dat in AppServiceProvider::boot().
In de nieuwe structuur is het beheer van de lijst met service providers verplaatst van config/app.php naar bootstrap/providers.php.
Providers die je aanmaakt met artisan make:provider worden hier automatisch aan toegevoegd.
In de nieuwe structuur is app/Exceptions/Handler.php vervallen; de afhandeling van excepties configureer je via withExceptions() in bootstrap/app.php.
Routes pas je aan via withRouting() in bootstrap/app.php.Een routebestand toevoegen:
Volledige controle nemen (zoals de RouteServiceProvider in Laravel 10):Geef je using op, dan wordt de standaard routeregistratie van Laravel volledig uitgeschakeld en beheer je alles zelf.
Voeg je een providers-sleutel toe aan config/app.php, dan wordt die samengevoegd met de config/app.php binnen het framework en toegepast.
Met de replace()-methode vervang je een standaardprovider door je eigen implementatie.
Vanaf Laravel 11 is API-functionaliteit niet standaard aanwezig; je installeert die apart wanneer je die nodig hebt.
Dit commando maakt en configureert het volgende:
  • routes/api.php
  • De configuratie van Laravel Sanctum voor API-authenticatie
  • Registratie van de API-routes in bootstrap/app.php
Vanaf Laravel 11 is ook broadcastingfunctionaliteit niet standaard aanwezig; je installeert die apart wanneer je die nodig hebt.
Dit commando maakt en configureert het volgende:
  • routes/channels.php
  • De installatie en configuratie van Laravel Reverb
  • Het configuratiebestand voor broadcasting
Bekijk de inhoud van bootstrap/app.php.Nieuwe structuur van Laravel 11 en later (of al gemigreerd):
Project dat met de oude structuur van Laravel 10 of eerder is geüpgraded:
Zie je de vorm return Application::configure(..., dan is het de nieuwe structuur; zo niet, dan is het een project dat met de oude structuur is geüpgraded. Voor het migreren van een project met de oude structuur naar de nieuwe structuur, zie de migratiegids.

Gerelateerde pagina’s

Applicatiestructuur van Laravel 11 en later

Een compleet overzicht van de nieuwe applicatiestructuur en de interne implementatie van de ApplicationBuilder.

Migratiegids van oude naar nieuwe structuur

Stap voor stap migreren van de oude appstructuur van Laravel 10 naar de nieuwe structuur van Laravel 11 en later.
Laatst gewijzigd op 6 september 2026