From fb5e5594bea149ca730bc6424dc547dab3347747 Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Fri, 14 Jun 2013 20:53:12 +0200 Subject: Fix issue #82 : ajout direct de Minz sans devoir faire appel au script ./build.sh --- lib/minz/FrontController.php | 123 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100755 lib/minz/FrontController.php (limited to 'lib/minz/FrontController.php') diff --git a/lib/minz/FrontController.php b/lib/minz/FrontController.php new file mode 100755 index 000000000..ab951263d --- /dev/null +++ b/lib/minz/FrontController.php @@ -0,0 +1,123 @@ +. +# +# ***** END LICENSE BLOCK ***** + +/** + * La classe FrontController est le noyau du framework, elle lance l'application + * Elle est appelée en général dans le fichier index.php à la racine du serveur + */ +class FrontController { + protected $dispatcher; + protected $router; + + /** + * Constructeur + * Initialise le router et le dispatcher + */ + public function __construct () { + $this->loadLib (); + + if (LOG_PATH === false) { + $this->killApp ('Path doesn\'t exist : LOG_PATH'); + } + + try { + Configuration::init (); + + Request::init (); + + $this->router = new Router (); + $this->router->init (); + } catch (RouteNotFoundException $e) { + Log::record ($e->getMessage (), Log::ERROR); + Error::error ( + 404, + array ('error' => array ($e->getMessage ())) + ); + } catch (MinzException $e) { + Log::record ($e->getMessage (), Log::ERROR); + $this->killApp (); + } + + $this->dispatcher = Dispatcher::getInstance ($this->router); + } + + /** + * Inclue les fichiers de la librairie + */ + private function loadLib () { + require ('ActionController.php'); + require ('Cache.php'); + require ('Configuration.php'); + require ('Dispatcher.php'); + require ('Error.php'); + require ('Helper.php'); + require ('Log.php'); + require ('Model.php'); + require ('Paginator.php'); + require ('Request.php'); + require ('Response.php'); + require ('Router.php'); + require ('Session.php'); + require ('Translate.php'); + require ('Url.php'); + require ('View.php'); + + require ('dao/Model_pdo.php'); + require ('dao/Model_txt.php'); + require ('dao/Model_array.php'); + + require ('exceptions/MinzException.php'); + } + + /** + * Démarre l'application (lance le dispatcher et renvoie la réponse + */ + public function run () { + try { + $this->dispatcher->run (); + Response::send (); + } catch (MinzException $e) { + Log::record ($e->getMessage (), Log::ERROR); + + if ($e instanceof FileNotExistException || + $e instanceof ControllerNotExistException || + $e instanceof ControllerNotActionControllerException || + $e instanceof ActionException) { + Error::error ( + 404, + array ('error' => array ($e->getMessage ())), + true + ); + } else { + $this->killApp (); + } + } + } + + /** + * Permet d'arrêter le programme en urgence + */ + private function killApp ($txt = '') { + if ($txt == '') { + $txt = 'See logs files'; + } + exit ('### Application problem ###'."\n".$txt); + } +} -- cgit v1.2.3