Ejemplo n.º 1
0
 /**
  * Méthode vérifiant l'existance et retournant une nouvelle instance du controller récupéré
  * Renvoie vers la page d'erreur 404 si le fichier contenant le controller n'existe pas
  * Stop l'application et renvoie une erreur si le fichier existe mais pas la classe demandée
  * @return DefaultController
  */
 public static function getController()
 {
     if (Core::$controller === "statique") {
         self::$instance_controller = new StaticController();
         return self::$instance_controller;
     }
     $seo = Dictionary::seoInfos(self::$controller, self::$action);
     $controller_file = self::$path_to_application . "/modules/" . self::$module . "/controllers/controller." . self::$controller . ".php";
     $controller = 'app\\' . self::$application . '\\controllers\\' . self::$module . '\\' . self::$controller;
     if (!file_exists($controller_file)) {
         $defaultController = self::$application->getModule()->defaultController;
         if (call_user_func_array(array($defaultController, "isFromDB"), array(self::$controller, self::$action, self::$url))) {
             $controller = self::$controller = $defaultController;
             self::$action = "prepareFromDB";
         } else {
             Go::to404();
         }
     } else {
         include_once $controller_file;
     }
     if (!class_exists($controller)) {
         if (self::debug()) {
             trigger_error("Controller <b>" . self::$controller . "</b> introuvable", E_USER_ERROR);
         } else {
             Go::to404();
         }
     }
     self::$instance_controller = new $controller();
     if (isset($seo["title"])) {
         self::$instance_controller->setTitle($seo["title"]);
     }
     if (isset($seo["description"])) {
         self::$instance_controller->setDescription($seo["description"]);
     }
     return self::$instance_controller;
 }