cleaned
This commit is contained in:
@@ -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 :
|
||||
|
||||
@@ -1,80 +1,56 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
require __DIR__ . '/../vendor/autoload.php';
|
||||
require __DIR__ . '/../src/Config/redbean.php';
|
||||
|
||||
use DI\ContainerBuilder;
|
||||
use Slim\Factory\AppFactory;
|
||||
use Slim\Views\Twig;
|
||||
use Slim\Views\TwigMiddleware;
|
||||
use Twig\Loader\FilesystemLoader;
|
||||
use RedBeanPHP\R; // <-- import de la façade RedBean
|
||||
|
||||
// -------------------------------------------------
|
||||
// Autoloader Composer
|
||||
// Conteneur DI
|
||||
// -------------------------------------------------
|
||||
require __DIR__ . '/../vendor/autoload.php';
|
||||
|
||||
/* -------------------------------------------------
|
||||
Container (DI) – configuration explicite
|
||||
------------------------------------------------- */
|
||||
$containerBuilder = new ContainerBuilder();
|
||||
|
||||
$containerBuilder->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();
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user