/**
  * Méthode permettant d'initialiser l'ensemble des fonctionnalités critiques
  * du système.
  * Vérifie le mode actuellement sélectionné, si la constante RELEASE est
  * initialisée à TRUE alors les erreurs ne seront pas affichées directement.
  */
 public static function Start()
 {
     if (self::$off) {
         self::$off = false;
         if (RELEASE) {
             ob_start();
         }
         spl_autoload_register(function ($class) {
             $directories = ['../main/controller', '../main/libs', '../main/model'];
             $class = strtolower($class);
             foreach ($directories as $directory) {
                 $path = $directory . '/class.' . $class . '.inc.php';
                 if (is_file($path)) {
                     require $path;
                     return false;
                 }
             }
         });
         session_start();
         self::SetData();
         require LIBS . '/functions.lib.php';
         require LIBS . '/class.database.inc.php';
         require LIBS . '/class.session.inc.php';
         Database::Init();
         $request = self::GetRequest();
         Session::Init();
         //if (isset($data)) {
         //    $request[2] = array_merge($request[2], $data);
         //}
         if (empty($request[0]) || empty($request[1])) {
             $request[0] = 'home';
             $request[1] = 'login';
         }
         $callback = [$request[0], $request[1]];
         call_user_func_array($callback, $request[2]);
         self::Close();
     }
 }