. # # ***** 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'); } }