En esta lección del Curso de Novedades de Laravel 11, exploramos los Service Providers, los cuales son clases que nos permiten configurar y registrar servicios en Laravel a través de su contenedor de inyección de dependencias. Estas clases son fundamentales ya que unen los diferentes servicios y configuraciones del framework con los de nuestra propia aplicación.
Vamos a ver la diferencia del directorio app/Providers/
entre un proyecto creado con Laravel 10 y otro creado con Laravel 11 y cómo podemos generar y registrar Service Providers en esta nueva versión del framework.
Los Service Providers desempeñan un papel crucial al unir y enlazar los diferentes servicios y configuraciones del framework, así como los de nuestra propia aplicación. Estos se encuentran presentes desde Laravel 5.1 como aprendimos en el tutorial Cómo funcionan los Service Providers en Laravel 5.1, y la principal diferencia es que ahora la lista de Providers ha sido movida al directorio: bootstrap/providers.php.
Puedes aprender cómo crear tu propio contenedor de inyección de dependencias y tus propios Service Providers desde cero en el Curso de creación de componentes para PHP y Laravel.
Registro automático de Service Providers
Es importante destacar que Laravel 11 simplifica el proceso de registro de Service Providers.
A partir de Laravel 11, al utilizar el comando php artisan make:provider
, Laravel no solo genera el nuevo Service Provider en el directorio correspondiente, sino que también lo añade automáticamente al archivo bootstrap/providers.php
, por lo que no necesitas registrarlo manualmente.
Cambios al directorio app/Providers en Laravel 11
Al abrir el directorio app/Providers/ en Laravel 11, podremos notar que la nuestra estructura base incluye AppServiceProvider
solamente y el resto de los providers que incluía Laravel 10 e inferior, como por ejemplo RouteServiceProvider
, ya no están.
¿Qué significa esto?
Esto quiere decir que muchas de las configuraciones que agregábamos a otros Service Providers, ahora podemos hacerlo directamente en AppServiceProvider
.
Como, por ejemplo, la restricción a nuestras rutas en Laravel 11. Se puede lograr de la misma forma desde el método boot()
de AppServiceProvider
:
namespace App\Providers; use Illuminate\Support\Facades\Route; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider { public function boot() { Route::pattern('id', '[0-9]+'); } }
Por supuesto, también puedes agregar nuevos Service Providers con php artisan make:provider
.
Recomendación al actualizar de Laravel 10 a 11
Si estás actualizando un proyecto de Laravel 10, este trabajo puede representar una tarea bastante ardua o tediosa, así que es importante que tengas en cuenta que no necesitas traer toda esta nueva estructura a Laravel 11, puesto que la estructura de Laravel 10 es soportada sin problemas.
En la siguiente lección, veremos donde se encuentran las configuraciones de rutas que traía Laravel 10 e inferior
Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.
Lección anterior Archivos de configuración en Laravel 11 Lección siguiente Configuración de rutas en Laravel 11