From 82252d8a273db0c6fa7a40c392d0dc5f199d4384 Mon Sep 17 00:00:00 2001 From: julien Date: Wed, 4 Mar 2026 04:09:17 +0100 Subject: [PATCH] cleaned --- README.md | 7 +---- public/index.php | 66 ++++++++++++++---------------------------- src/Config/redbean.php | 20 ++++++++----- 3 files changed, 35 insertions(+), 58 deletions(-) diff --git a/README.md b/README.md index 22ee4df..2770975 100644 --- a/README.md +++ b/README.md @@ -14,12 +14,7 @@ $ composer install Créer le fichier vide pour la base de données : ``` -mkdir database && touch database/blog.sqlite -``` - -Exécuter le script de migration : -``` -$ php migrate.php +mkdir database ``` Lancer le serveur de développement : diff --git a/public/index.php b/public/index.php index 66797f3..2425708 100644 --- a/public/index.php +++ b/public/index.php @@ -1,80 +1,56 @@ addDefinitions([ - // ----------------------------------------------------------------- - // Twig : création de l’instance Slim\Views\Twig - // ----------------------------------------------------------------- + // Twig Twig::class => function () { - $loader = new FilesystemLoader(__DIR__ . '/../views'); - $settings = ['cache' => false]; // désactiver le cache en dev - return new Twig($loader, $settings); + $loader = new FilesystemLoader(__DIR__ . '/../views'); + return new Twig($loader, ['cache' => false]); // désactivé en dev }, - // ----------------------------------------------------------------- - // Ajoute d’autres services ici si besoin (logger, DB, etc.) - // ----------------------------------------------------------------- + // RedBean – service DB + 'db' => function () { + $dbPath = __DIR__ . '/../database/app.sqlite'; + initRedBean($dbPath); // crée le fichier + connexion + return R::getDatabaseAdapter(); // valeur retournée (facultatif) + }, + + // …autres services ]); $container = $containerBuilder->build(); /* ------------------------------------------------- - Instanciation de l’application Slim avec le container + Initialise la connexion DB dès le bootstrap ------------------------------------------------- */ +$container->get('db'); // déclenche initRedBean() avant le chargement des routes + AppFactory::setContainer($container); $app = AppFactory::create(); -/* ------------------------------------------------- - Middleware d’erreur - ------------------------------------------------- */ $app->addErrorMiddleware(true, true, true); -/* ------------------------------------------------- - Twig middleware – on récupère explicitement le service Twig - ------------------------------------------------- */ -$twig = $container->get(Twig::class); // <-- récupération directe -$app->add(TwigMiddleware::create($app, $twig)); // <-- utilisation de create(), pas createFromContainer() +$twig = $container->get(Twig::class); +$app->add(TwigMiddleware::create($app, $twig)); -/* ------------------------------------------------- - Vérification / création du fichier SQLite - ------------------------------------------------- */ -$dbFile = __DIR__ . '/../database/blog.sqlite'; -if (!file_exists($dbFile)) { - touch($dbFile); - chmod($dbFile, 0664); -} - -/* ------------------------------------------------- - RedBeanPHP (connexion SQLite) - ------------------------------------------------- */ -require __DIR__ . '/../src/Config/redbean.php'; -initRedBean($dbFile); - -/* ------------------------------------------------- - Chargement des routes - ------------------------------------------------- */ foreach (glob(__DIR__ . '/../src/Routes/*.routes.php') as $file) { (require $file)($app); } -/* ------------------------------------------------- - Démarrage de l’application - ------------------------------------------------- */ $app->run(); diff --git a/src/Config/redbean.php b/src/Config/redbean.php index a87f179..c2e6df6 100644 --- a/src/Config/redbean.php +++ b/src/Config/redbean.php @@ -3,17 +3,23 @@ declare(strict_types=1); use RedBeanPHP\R; +/** + * Crée le fichier SQLite s’il n’existe pas. + */ +function ensureDatabaseFile(string $path): void +{ + if (!file_exists($path)) { + touch($path); + chmod($path, 0664); // rw‑rw‑r-- + } +} + /** * Initialise RedBeanPHP avec SQLite. - * Appelé depuis public/index.php avant le chargement des routes. */ function initRedBean(string $dbPath): void { - // Le préfixe « sqlite: » indique le driver SQLite + ensureDatabaseFile($dbPath); R::setup('sqlite:' . $dbPath); - - // En mode production on désactive le « freeze » pour que RedBean - // ne crée plus de tables automatiquement. - // Ici on garde le freeze à false pendant le développement. - R::freeze(false); + R::freeze(false); // false en dev, true en prod }