Better code organization
This commit is contained in:
109
public/index.php
109
public/index.php
@@ -4,116 +4,11 @@ declare(strict_types=1);
|
||||
|
||||
require __DIR__ . '/../vendor/autoload.php';
|
||||
|
||||
use Dotenv\Dotenv;
|
||||
use Slim\Factory\AppFactory;
|
||||
use Slim\Views\TwigMiddleware;
|
||||
use Slim\Views\Twig;
|
||||
use Slim\Csrf\Guard;
|
||||
use Medoo\Medoo;
|
||||
use App\Controllers\PostController;
|
||||
use App\Repositories\PostRepository;
|
||||
use App\Services\HtmlSanitizer;
|
||||
use App\Services\HtmlPurifierFactory;
|
||||
use App\Services\CsrfExtension;
|
||||
use App\Database\Migrator;
|
||||
use App\Bootstrap;
|
||||
use App\Routes;
|
||||
use App\Config;
|
||||
|
||||
// ============================================
|
||||
// Démarrer la session PHP
|
||||
// ============================================
|
||||
|
||||
session_start();
|
||||
|
||||
// ============================================
|
||||
// Vérifier les répertoires
|
||||
// ============================================
|
||||
|
||||
Bootstrap::checkDirectories();
|
||||
|
||||
// ============================================
|
||||
// Charger les variables d'environnement
|
||||
// ============================================
|
||||
|
||||
$dotenv = Dotenv::createImmutable(__DIR__ . '/..');
|
||||
$dotenv->load();
|
||||
|
||||
// ============================================
|
||||
// Configuration
|
||||
// ============================================
|
||||
|
||||
$env = $_ENV['APP_ENV'] ?? 'production';
|
||||
$isDev = strtolower($env) === 'development';
|
||||
|
||||
// ============================================
|
||||
// Initialisation de l'application Slim
|
||||
// ============================================
|
||||
|
||||
$app = AppFactory::create();
|
||||
$responseFactory = $app->getResponseFactory();
|
||||
|
||||
// ============================================
|
||||
// Initialisation des services
|
||||
// ============================================
|
||||
|
||||
// CSRF Guard (middleware)
|
||||
$csrf = new Guard($responseFactory);
|
||||
|
||||
// Twig
|
||||
$twig = Twig::create(
|
||||
__DIR__ . '/../views',
|
||||
['cache' => Config::getTwigCache($isDev)]
|
||||
);
|
||||
|
||||
// Ajouter l'extension CSRF à Twig
|
||||
$twig->addExtension(new CsrfExtension($csrf));
|
||||
|
||||
// Medoo (SQLite)
|
||||
$dbFile = Config::getDatabasePath();
|
||||
$db = new Medoo([
|
||||
'type' => 'sqlite',
|
||||
'database' => $dbFile,
|
||||
]);
|
||||
|
||||
// Exécuter les migrations
|
||||
Migrator::run($db);
|
||||
|
||||
// HtmlPurifier (créé via la factory)
|
||||
$htmlPurifierCacheDir = __DIR__ . '/../var/cache/htmlpurifier';
|
||||
$htmlPurifier = HtmlPurifierFactory::create($htmlPurifierCacheDir);
|
||||
|
||||
// HtmlSanitizer (reçoit HTMLPurifier injecté)
|
||||
$htmlSanitizer = new HtmlSanitizer($htmlPurifier);
|
||||
|
||||
// PostRepository
|
||||
$postRepository = new PostRepository($db);
|
||||
|
||||
// ============================================
|
||||
// Middleware
|
||||
// ============================================
|
||||
|
||||
$app->addBodyParsingMiddleware();
|
||||
$app->add(TwigMiddleware::create($app, $twig));
|
||||
|
||||
// Enregistrer le middleware CSRF pour toutes les routes
|
||||
$app->add($csrf);
|
||||
|
||||
// ============================================
|
||||
// Routes
|
||||
// ============================================
|
||||
|
||||
$controller = new PostController($twig, $postRepository, $htmlSanitizer);
|
||||
Routes::register($app, $controller);
|
||||
|
||||
// ============================================
|
||||
// Error Handling
|
||||
// ============================================
|
||||
|
||||
$errorMiddleware = $app->addErrorMiddleware($isDev, $isDev, $isDev);
|
||||
|
||||
// ============================================
|
||||
// Run
|
||||
// ============================================
|
||||
|
||||
// Initialiser et exécuter l'application
|
||||
$app = Bootstrap::create()->initialize();
|
||||
$app->run();
|
||||
|
||||
Reference in New Issue
Block a user