Varous improvements
This commit is contained in:
@@ -5,16 +5,22 @@ declare(strict_types=1);
|
||||
require __DIR__ . '/../vendor/autoload.php';
|
||||
|
||||
use Dotenv\Dotenv;
|
||||
|
||||
// Charger les variables d'environnement
|
||||
$dotenv = Dotenv::createImmutable(__DIR__ . '/..');
|
||||
$dotenv->load();
|
||||
|
||||
use Slim\Factory\AppFactory;
|
||||
use Slim\Views\TwigMiddleware;
|
||||
use Slim\Views\Twig;
|
||||
use Medoo\Medoo;
|
||||
use App\Controllers\PostController;
|
||||
use App\Repositories\PostRepository;
|
||||
use App\Services\HtmlSanitizer;
|
||||
use App\Routes;
|
||||
use App\Config;
|
||||
|
||||
// ============================================
|
||||
// Charger les variables d'environnement
|
||||
// ============================================
|
||||
|
||||
$dotenv = Dotenv::createImmutable(__DIR__ . '/..');
|
||||
$dotenv->load();
|
||||
|
||||
// ============================================
|
||||
// Configuration
|
||||
@@ -23,26 +29,6 @@ use App\Controllers\PostController;
|
||||
$env = $_ENV['APP_ENV'] ?? 'production';
|
||||
$isDev = strtolower($env) === 'development';
|
||||
|
||||
// Dossier de cache Twig (false en dev, chemin en prod)
|
||||
$twigCache = false;
|
||||
if (!$isDev) {
|
||||
$twigCache = __DIR__ . '/../var/cache/twig';
|
||||
if (!is_dir($twigCache)) {
|
||||
@mkdir($twigCache, 0755, true);
|
||||
}
|
||||
}
|
||||
|
||||
// Chemin base de données
|
||||
$dbFile = __DIR__ . '/../database/app.sqlite';
|
||||
$dbDir = dirname($dbFile);
|
||||
if (!is_dir($dbDir)) {
|
||||
@mkdir($dbDir, 0755, true);
|
||||
}
|
||||
if (!file_exists($dbFile)) {
|
||||
@touch($dbFile);
|
||||
@chmod($dbFile, 0664);
|
||||
}
|
||||
|
||||
// ============================================
|
||||
// Initialisation des services
|
||||
// ============================================
|
||||
@@ -50,10 +36,11 @@ if (!file_exists($dbFile)) {
|
||||
// Twig
|
||||
$twig = Twig::create(
|
||||
__DIR__ . '/../views',
|
||||
['cache' => $twigCache]
|
||||
['cache' => Config::getTwigCache($isDev)]
|
||||
);
|
||||
|
||||
// Medoo (SQLite)
|
||||
$dbFile = Config::getDatabasePath();
|
||||
$db = new Medoo([
|
||||
'type' => 'sqlite',
|
||||
'database' => $dbFile,
|
||||
@@ -71,8 +58,11 @@ $db->pdo->exec("
|
||||
)
|
||||
");
|
||||
|
||||
// Sanitizer HTML
|
||||
$htmlSanitizer = new \App\Services\HtmlSanitizer();
|
||||
// HtmlSanitizer
|
||||
$htmlSanitizer = new HtmlSanitizer();
|
||||
|
||||
// PostRepository
|
||||
$postRepository = new PostRepository($db);
|
||||
|
||||
// ============================================
|
||||
// Slim App
|
||||
@@ -86,19 +76,17 @@ $app->add(TwigMiddleware::create($app, $twig));
|
||||
// Routes
|
||||
// ============================================
|
||||
|
||||
$controller = new PostController($twig, $db, $htmlSanitizer);
|
||||
$controller = new PostController($twig, $postRepository, $htmlSanitizer);
|
||||
Routes::register($app, $controller);
|
||||
|
||||
$app->get('/', [$controller, 'index']);
|
||||
$app->get('/article/{slug}', [$controller, 'show']);
|
||||
$app->get('/admin', [$controller, 'admin']);
|
||||
$app->get('/admin/edit/{id}', [$controller, 'form']);
|
||||
$app->post('/admin/create', [$controller, 'create']);
|
||||
$app->post('/admin/edit/{id}', [$controller, 'update']);
|
||||
$app->post('/admin/delete/{id}', [$controller, 'delete']);
|
||||
// ============================================
|
||||
// Error Handling
|
||||
// ============================================
|
||||
|
||||
$errorMiddleware = $app->addErrorMiddleware($isDev, $isDev, $isDev);
|
||||
|
||||
// ============================================
|
||||
// Run
|
||||
// ============================================
|
||||
|
||||
$errorMiddleware = $app->addErrorMiddleware($isDev, $isDev, $isDev);
|
||||
$app->run();
|
||||
|
||||
Reference in New Issue
Block a user