81 lines
2.9 KiB
PHP
81 lines
2.9 KiB
PHP
<?php
|
||
declare(strict_types=1);
|
||
|
||
use DI\ContainerBuilder;
|
||
use Slim\Factory\AppFactory;
|
||
use Slim\Views\Twig;
|
||
use Slim\Views\TwigMiddleware;
|
||
use Twig\Loader\FilesystemLoader;
|
||
|
||
// -------------------------------------------------
|
||
// Autoloader Composer
|
||
// -------------------------------------------------
|
||
require __DIR__ . '/../vendor/autoload.php';
|
||
|
||
/* -------------------------------------------------
|
||
Container (DI) – configuration explicite
|
||
------------------------------------------------- */
|
||
$containerBuilder = new ContainerBuilder();
|
||
|
||
$containerBuilder->addDefinitions([
|
||
|
||
// -----------------------------------------------------------------
|
||
// Twig : création de l’instance Slim\Views\Twig
|
||
// -----------------------------------------------------------------
|
||
Twig::class => function () {
|
||
$loader = new FilesystemLoader(__DIR__ . '/../views');
|
||
$settings = ['cache' => false]; // désactiver le cache en dev
|
||
return new Twig($loader, $settings);
|
||
},
|
||
|
||
// -----------------------------------------------------------------
|
||
// Ajoute d’autres services ici si besoin (logger, DB, etc.)
|
||
// -----------------------------------------------------------------
|
||
]);
|
||
|
||
$container = $containerBuilder->build();
|
||
|
||
/* -------------------------------------------------
|
||
Instanciation de l’application Slim avec le container
|
||
------------------------------------------------- */
|
||
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()
|
||
|
||
/* -------------------------------------------------
|
||
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();
|