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