set(ServiceInterface::class, fn($c) => new ConcreteService()); * * @param Framework\Container $container */ use Framework\Container; use Infrastructure\Logging\AuditLogger; use Infrastructure\Persistence\Connection; return function (Container $container): void { // Note: PDO is NOT registered globally because repositories // use different databases (ki_dev vs ki_content). // Repositories handle their own DB connection via DatabaseFactory. // Audit Logger (uses correlation ID from request) $container->set(AuditLogger::class, function () { return new AuditLogger(); }); // Note: Most services don't need explicit registration. // The container will autowire them automatically based on // constructor type hints. Only register services that: // - Need specific configuration // - Map interfaces to implementations // - Require complex initialization };