🎃 12 meses por 75 €

El plan anual a mitad de precio hasta el 31 de octubre.

Aprovechar la oferta

🎃 Halloween: 12 meses por 75 €

Plan anual a mitad de precio, para altas y renovaciones. Solo hasta el 31 de octubre.
Aprovechar la oferta
Saltar al contenido
Curso Actualizar un proyecto de Laravel 10 a Laravel 11
12/13 La estructura nueva de Laravel 11 Migrar a la estructura de Laravel 11: bootstrap/providers.php y los providers que desaparecen
Tu lectura Quedan 23 min
Lección 12 de 13 · La estructura nueva de Laravel 11

Migrar a la estructura de Laravel 11: bootstrap/providers.php y los providers que desaparecen

23 min de lectura Laravel 11

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.

Lo que queda de esta lección
  1. 02AuthServiceProvider: la policy se descubre sola
  2. 03RouteServiceProvider: el limitador de la API
  3. 04RouteServiceProvider::HOME en 9 archivos
  4. 05bootstrap/providers.php
  5. 06Borrar los providers que sobran
  6. 07Comprobar el proyecto sin los providers de Laravel 10
Sigue leyendo con tu suscripción El curso completo, con el certificado y el foro, está incluido en la suscripción. Ver los planes