Service Container — это IoC-контейнер, который управляет зависимостями и их разрешением.
// bind() — каждый раз создаёт новый экземпляр
app()->bind(PaymentService::class, function ($app) {
return new PaymentService($app->make(HttpClient::class));
});
// singleton() — создаёт один раз, дальше отдаёт тот же объект
app()->singleton(CacheManager::class, function ($app) {
return new CacheManager(config('cache'));
});
🔹 Когда что использовать
→ bind() — если объект имеет состояние, которое должно быть свежим на каждый запрос. Например, корзина пользователя.
→ singleton() — если объект stateless или его инициализация дорогая. Например, коннект к внешнему API, логгер.