singleton(RateLimiterInterface::class, function($c) { $requests = (int) \Core\Config::get('rate_limit_requests', 100); $window = (int) \Core\Config::get('rate_limit_window_seconds', 60); return new InMemoryRateLimiter($requests, $window); }); } else { $container->singleton(RateLimiterInterface::class, function($c) { $dir = Config::get('rate_limit_storage_dir', sys_get_temp_dir() . '/api_rate_limit'); return new FileRateLimiter($dir); }); } // Logger binding as PSR LoggerInterface $container->singleton(LoggerInterface::class, function($c) { // LoggerFactory::create returns a Monolog\Logger instance return LoggerFactory::create(Config::get('log_ident', 'api')); }); // External API service binding $container->singleton(ExternalApiService::class, function($c) { return new ExternalApiService(); }); // If you have other services, bind them here, for example: // $container->singleton(SomeService::class, function($c) { // return new SomeService($c->make(LoggerInterface::class), ...); // }); return $container;