Migrar a la estructura de Laravel 11: bootstrap/providers.php y los providers que desaparecen
Hola, bienvenido. En esta lección vamos a quitar los service providers que quedan de Laravel 10. En Laravel 11, los providers del proyecto se registran en bootstrap/providers.php, y no en el array providers de config/app.php, y el esqueleto solo tiene uno, AppServiceProvider: lo que hacían los otros 4 lo hace ahora el framework por su cuenta o se mueve a AppServiceProvider. El EventServiceProvider ya lo quitamos en la lección anterior, así que nos quedan 3.
De los 3, el que da más trabajo es RouteServiceProvider, por su constante HOME, que desaparece con él: la usan 9 archivos que publicó Breeze 1, y los vamos a dejar exactamente como los genera Breeze 2.
Qué sustituye a cada provider de Laravel 10
Esta tabla resume los 5 providers que tenía el proyecto y dónde termina lo que hacía cada uno:
| Provider de Laravel 10 | Qué hacía en el proyecto | En Laravel 11 |
|---|---|---|
AuthServiceProvider |
Registraba TicketPolicy para el modelo Ticket en $policies |
Laravel encuentra la policy por su nombre, sin registrarla |
EventServiceProvider |
Registraba los 2 listeners de Registered en $listen |
Laravel descubre los listeners de app/Listeners y registra solo el de la verificación de email (lección 11) |
RouteServiceProvider |
Cargaba las rutas, definía el limitador api y la constante HOME |
withRouting() (lección 11), el limitador en AppServiceProvider y route('dashboard', absolute: false) en vez de HOME |
BroadcastServiceProvider |
Registraba las rutas de broadcasting y routes/channels.php, pero estaba comentado en config/app.php |
Nada: el proyecto no emite eventos por broadcasting |
AppServiceProvider |
Nada, estaba vacío | Se queda, ahora en bootstrap/providers.php y con el limitador de la API |
Fíjate en el patrón: casi todo lo que hacían los providers de Laravel 10 era registrar cosas a mano que Laravel 11 encuentra solo, siguiendo convenciones de nombres y carpetas. Lo que no sigue ninguna convención, como el limitador de la API, pasa a AppServiceProvider. En un proyecto como este, con los providers casi como los dejó el esqueleto, el cambio es sobre todo borrar. En tu proyecto real, abre antes cada provider y busca lo que no sea del esqueleto: un Gate::define(), un Route::bind(), un observer registrado a mano. Todo eso pasa al boot() de AppServiceProvider, que es lo que proponen las notas de la versión 11.
- 02AuthServiceProvider: la policy se descubre sola
- 03RouteServiceProvider: el limitador de la API
- 04RouteServiceProvider::HOME en 9 archivos
- 05bootstrap/providers.php
- 06Borrar los providers que sobran
- 07Comprobar el proyecto sin los providers de Laravel 10