isProd()) { $cacheDir = $basePath . '/var/cache/prod'; if (!is_dir($cacheDir)) { mkdir($cacheDir, 0755, true); } $builder->enableCompilation($cacheDir); } $builder->useAttributes(true); $builder->addDefinitions([ Config::class => $config, Environment::class => $env, LoggerInterface::class => function ($c) use ($config) { $loggers = [$c->get(StdoutLogger::class)]; if ($config->get('log.file')) { $loggers[] = $c->get(FileLogger::class); } return new CompositeLogger($loggers); }, ]); $routesFile = $basePath . '/config/routes.php'; if (file_exists($routesFile)) { $routes = require $routesFile; $builder->addDefinitions([ Router::class => fn() => new Router($routes), ]); } $servicesFile = $basePath . '/config/services.php'; if (file_exists($servicesFile)) { $definitions = require $servicesFile; $definitions($builder, $config, $basePath); } return $builder->build(); } }