addDefinitions([ /* ------------------------------------------------- * Service Twig (template engine) * ------------------------------------------------- */ Twig::class => function () { $loader = new FilesystemLoader(__DIR__ . '/../views'); // En développement on désactive le cache pour voir les changements immédiatement return new Twig($loader, ['cache' => false]); }, /* ------------------------------------------------- * Service « db » – connexion RedBean * ------------------------------------------------- */ 'db' => function () { // Le chemin du fichier SQLite est déterminé dans redbean.php $dbPath = getDefaultDbPath(); // ex. …/database/app.sqlite ou autre via DB_FILE initRedBean($dbPath); // crée le fichier + lance R::setup() // Retourner l’adaptateur (facultatif, on le garde pour que le service existe) return R::getDatabaseAdapter(); }, // ----------------------------------------------------------------- // Ajoutez d’autres services ici (logger, repository, etc.) // ----------------------------------------------------------------- ]); /* ------------------------------------------------- * Build du conteneur * ------------------------------------------------- */ $container = $containerBuilder->build(); /* ------------------------------------------------- * Initialise la connexion DB dès le bootstrap * ------------------------------------------------- */ $container->get('db'); // déclenche initRedBean() avant le chargement des routes /* ------------------------------------------------- * Instanciation de l’application Slim avec le conteneur * ------------------------------------------------- */ AppFactory::setContainer($container); $app = AppFactory::create(); /* ------------------------------------------------- * Middleware d’erreur (affiche les traces en dev) * ------------------------------------------------- */ $app->addErrorMiddleware(true, true, true); /* ------------------------------------------------- * Middleware Twig – rend les vues disponibles * ------------------------------------------------- */ $twig = $container->get(Twig::class); $app->add(TwigMiddleware::create($app, $twig)); /* ------------------------------------------------- * Chargement dynamique de toutes les définitions de routes * ------------------------------------------------- */ foreach (glob(__DIR__ . '/../src/Routes/*.routes.php') as $file) { // Chaque fichier retourne une closure qui reçoit $app (require $file)($app); } /* ------------------------------------------------- * Démarrage de l’application * ------------------------------------------------- */ $app->run();