GlosarioArquitectura

¿Qué es Service Provider?

Los Service Providers son clases centrales en Laravel que registran servicios en el contenedor de dependencias y configuran la aplicacion durante el proceso de arranque (bootstrapping).

Service Providers

Los Service Providers son el lugar central donde se configura y arranca la aplicacion Laravel. Registran bindings en el service container, event listeners, middleware, rutas y cualquier otra configuracion necesaria.

Estructura de un Service Provider

php artisan make:provider PaymentServiceProvider
class PaymentServiceProvider extends ServiceProvider
{
    // Registrar bindings en el contenedor
    public function register(): void
    {
        $this->app->bind(PaymentGateway::class, function ($app) {
            return new StripePaymentGateway(
                config('services.stripe.secret')
            );
        });

        $this->app->singleton(CartService::class);
    }

    // Configurar servicios despues del registro
    public function boot(): void
    {
        View::share('appName', config('app.name'));

        Blade::directive('money', function ($amount) {
            return "<?php echo number_format($amount, 2, ',', '.') . ' EUR'; ?>";
        });
    }
}

Todos los Service Providers se registran en bootstrap/providers.php (Laravel 11+). El metodo register() se ejecuta primero para todos los providers, y luego se ejecuta boot() para todos.

Laravel incluye varios providers por defecto como RouteServiceProvider, AuthServiceProvider y EventServiceProvider. Cuando creas un paquete para Laravel, tu Service Provider es el punto de entrada principal.