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.