Bootstrap app features in Service Providers — register bindings in register(), run setup in boot().
Service Providers
php artisan make:provider PaymentServiceProvider
class PaymentServiceProvider extends ServiceProvider {
public function register(): void {
$this->app->singleton(PaymentGateway::class, function ($app) {
return new StripeGateway(config("services.stripe.key"));
});
}
public function boot(): void {
// Run after all providers registered
View::share("siteName", config("app.name"));
Validator::extend("phone", fn($a, $v) => preg_match("/^+?d{10,15}$/", $v));
Route::model("user", User::class);
}
}
// Register in bootstrap/providers.php (Laravel 11)
return [
PaymentServiceProvider::class,
];