addDefinitions([ LoggerInterface::class => function (ContainerInterface $c) { $settings = $c->get(SettingsInterface::class); $loggerSettings = $settings->get('logger'); $logger = new Logger($loggerSettings['name']); $processor = new UidProcessor(); $logger->pushProcessor($processor); $handler = new StreamHandler($loggerSettings['path'], $loggerSettings['level']); $logger->pushHandler($handler); return $logger; }, Client::class => function () { return new Client([ 'headers' => [ 'Accept' => 'application/json', 'User-Agent' => 'Slim-Weather/1.0', ], ]); }, OpenWeatherClient::class => function (ContainerInterface $c) { $apiKey = getenv('OPENWEATHER_API_KEY') ?: ''; if ($apiKey === '') { throw new \RuntimeException('OPENWEATHER_API_KEY is not configured'); } return new OpenWeatherClient($c->get(Client::class), $apiKey); }, ]); };