From fb57be5a5af3a2fb46b2dbf2b503ffe78eb5cf49 Mon Sep 17 00:00:00 2001 From: Marien Fressinaud Date: Sun, 21 Oct 2012 18:47:57 +0200 Subject: First commit --- lib/FrontController.php | 104 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100755 lib/FrontController.php (limited to 'lib/FrontController.php') diff --git a/lib/FrontController.php b/lib/FrontController.php new file mode 100755 index 000000000..e424c6714 --- /dev/null +++ b/lib/FrontController.php @@ -0,0 +1,104 @@ +. +# +# ***** 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 (); + + 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); + $this->killApp (); + } + } + + /** + * Permet d'arrêter le programme en urgence + */ + private function killApp () { + exit ('### Application problem ###'."\n". + 'See logs files'); + } +} -- cgit v1.2.3