Files
LesRecettesDePapis/src/Kernel.php

100 lines
2.3 KiB
PHP
Raw Normal View History

2026-03-20 11:40:11 +01:00
<?php
namespace App;
use App\Exceptions\ConfigFailedLoadingException;
use App\Exceptions\InvalidRouteException;
2026-03-20 15:54:29 +01:00
use App\Helpers\Authentification;
2026-03-20 11:40:11 +01:00
use App\Helpers\AutoLoader;
use App\Helpers\ConfigFactory;
use App\Http\Router;
/**
* Classe primaire du site.
* Permet de lancer l'application.
*/
final class Kernel {
/**
* Liste des fichiers de configuration sous le format suivant :
* [ 'nom_de_la_config' -> [ 'cle" → valeur ] ]
*
* @var array<string,array>
*/
public private(set) static array $configs = [];
/**
* Instance actuelle de l'application.
* @var Kernel|null
*/
private static ?self $instance = null;
/**
* Méthode qui permet de démarrer le site.
* @return self
*/
public static function start(): self {
self::$instance = new self();
self::$instance->init();
return self::$instance;
}
/**
* Permet d'obtenir l'instance actuelle du site.
* @return self
*/
public static function getInstance(): self {
return self::$instance;
}
/**
* Constructeur.
*/
public function __construct() {
}
/**
* Permet de préparer le démarrage du site.
* Lancé automatiquement par start().
*
* @return void
* @see self::start()
*/
public function init(): void {
$this->buildAutoloader();
$this->loadConfig();
2026-03-20 15:54:29 +01:00
Authentification::startSession();
2026-03-20 11:40:11 +01:00
try {
Router::routeTo();
} catch ( InvalidRouteException $e ){
die( $e->getMessage() );
}
}
/**
* Permet de mettre en place l'Autoloader.
* @return void
*/
private function buildAutoloader(): void {
require_once 'Helpers/AutoLoader.php';
AutoLoader::register();
}
/**
* Permet de charger tous les fichiers de configuration du site.
* @return void
*/
private function loadConfig(): void {
try {
2026-03-20 11:40:11 +01:00
self::$configs['general'] = ConfigFactory::loadConfigFile('general');
self::$configs['route_arguments'] = ConfigFactory::loadConfigFile('route_arguments');
self::$configs['views'] = ConfigFactory::loadConfigFile('views');
2026-03-20 11:40:11 +01:00
} catch( ConfigFailedLoadingException $e ){
die( $e->getMessage() );
}
}
}