/** * 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; }