set(self::SETTINGS, $settings); // Twig template engine $container->set(self::TWIG, function (ContainerInterface $c) { /** @var Settings $settings */ $settings = $c->get(self::SETTINGS); return Twig::create(self::TWIG_TEMPLATE_DIR, $settings->getTwigSettings()); }); // Database connection $container->set(self::DATABASE, function (ContainerInterface $c) { /** @var Settings $settings */ $settings = $c->get(self::SETTINGS); $dbSettings = $settings->getDatabaseSettings(); return new PDO( "mysql:dbname={$dbSettings['dbname']};host={$dbSettings['host']};port={$dbSettings['port']}", $dbSettings['username'], $dbSettings['password'], [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, ], ); }); // Login, registration, authentication $container->set(LoginController::class, function (ContainerInterface $c) { return new LoginController( $c->get(self::TWIG) ); }); return $container; } }